繁体   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