如何实现客户端服务器应用程序(服务器端)(询问概念)

时间:2015-03-15 03:37:26

标签: java android python multithreading sockets

我正在制作一个简单的在线tic tac toe游戏(多人游戏)。 客户端是java(android) 服务器端是python(共享托管服务器上的linux)

我的问题是关于服务器端: 我首先想到有一个套接字(因为我只允许在服务器上使用一个端口),然后它等待2个用户连接并将它们配对在一起,启动一个新线程来处理它们,然后等待另一个2用户等。 但在阅读了很多关于多线程的内容后,我发现服务器最多可以处理20个线程。 所以我尝试使用进程而不是线程,但我得到了相同的结果。 而且,我发现套接字最多可以处理50个连接。

任何想法? 感谢

1 个答案:

答案 0 :(得分:1)

为了无限制地扩展,如果你控制客户端代码(所以你知道人们没有作弊 - 在tic-tac-toe他们不太可能:-),你可以让客户打开并提供一个侦听套接字,以便连接 - 当一个奇怪的客户端连接时,只需响应“请稍候”消息;当偶数客户端连接以匹配它时,使用有关彼此的侦听套接字信息响应两个客户端,并且让它们离开。

对于无法打开并监听新套接字的客户端(例如,在某些NAT安排背后隐藏的套接字),这将无效。在这种情况下,您可以将客户端(用于彼此的后续交互)切换到UDP到/从服务器 - UDP,不是面向连接,可以服务于任意数量的客户端(客户端对,在您的case!)在单个套接字上(但是你负责,在客户端和服务器端合作!)用于检查/确认数据包并确保它们的良好排序,哪个TCP是面向连接的,代表你处理:-)

我不确定你的约束究竟来自哪里,或者其他约束(例如客户端无法打开,通信和监听,新套接字......)可能适用。< / p>

但无论如何,一旦您完全理解并告诉我们 所有适用的约束,就可以始终找到某些解决方案(也许还有像pub-sub这样的新奇问题,例如https://cloud.google.com/pubsub/docs - 就像新的约束出现一样快,或者更快! - 聪明的家伙总是想办法解决......! - )