簡體   English   中英

客戶端服務器應用程序如何實現? (服務器端)(詢問概念)

[英]How are client server applications implemented? (server side) (asking about concept)

我正在制作一個簡單的在線井字游戲(多人游戲)。 客戶端是java(android)服務器端是python(共享主機服務器上的linux)

我的問題是關於服務器端的:我首先想到有一個套接字(因為只允許使用服務器上的一個端口),然后它等待2個用戶連接並將它們配對在一起,啟動一個新線程來處理與他們,然后等待另外2個用戶,依此類推。 但是在這里大量閱讀了有關多線程的信息后,我發現服務器最多可以處理20個線程。 所以我嘗試使用進程而不是線程,但是得到了相同的結果。 此外,我發現該套接字最多可以處理50個連接。

有任何想法嗎? 謝謝

要進行無限制擴展,如果您控制客戶端代碼(因此您知道人們沒有作弊-他們一口氣就不會:-),則可以讓客戶端打開並提供監聽套接字為了連接-當一個奇怪的客戶端連接時,只需以“ please wait”消息響應即可; 當偶數客戶端連接以匹配它時,使用彼此的偵聽套接字信息來響應這兩個客戶端,並避開。

對於不能打開和監聽新套接字的客戶端(例如,被隔離在某些NAT安排之后的套接字),這將不起作用。 在這種情況下,您可以將客戶端(用於彼此之間的后續交互)切換到UDP與服務器之間的UDP連接-UDP(不面向連接)可以為任意數量的客戶端(客戶端對中的客戶端對)提供服務在一個套接字上(但是,您有責任在客戶端和服務器端進行協作!),用於檢查/確認數據包並確保其順序良好(面向連接的TCP代表您處理:-) 。

我不確定您最初的確切約束來自何處,或者其他什么約束(例如客戶端無法打開,通信和收聽新套接字...)可能適用。

但是一種或另一種方式,一旦您完全理解並告訴我們 所有適用的約束,便總能找到一些解決方案(也許使用諸如pub-sub之類的新型術語,例如https://cloud.google.com/pubsub / docs-盡快出現新的限制,或者更快!,聰明的人總是在尋找解決方法...!-)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM