我正在开发一个群组聊天应用程序来学习如何使用套接字、线程(也许)和asycore模块(也许)。
我的想法是有一个客户机-服务器架构,这样当客户机连接到服务器时,服务器会向客户机发送其他连接的列表(其他客户机“用户名”,ip地址),然后一个人一次可以连接到一个或多个人,服务器将在客户机之间建立一个P2P连接。套接字部分正常工作,但服务器一次只能处理一个客户端连接。
处理多个连接的最佳、最常见、最实用的方法是什么?
我是在新连接进入服务器时创建一个新进程/线程,然后将不同的客户端连接连接在一起,还是使用asycore模块,据我所知,该模块使服务器将相同的数据发送到多个套接字(连接),而我只需调节数据的去向。在
如有任何帮助/想法/建议,将不胜感激。在
对于群聊应用程序,一般的方法是:
服务器端(接受进程):
服务器端客户端管理线程:
服务器端(群聊处理):
客户端:
在上述方面可以有很多改进。就像服务器可以轮询套接字或对一组套接字使用“select”操作一样。从某种意义上说,如果有很多连接的客户机,那么为每个连接的客户机使用一个单独的线程将是一种过度使用。(对于堆栈,每个线程考虑~1MB)。在
PS:我还没有真正使用
asyncore
模块。但我只是在猜测,当有很多连接的客户机和非常少的处理时,您会注意到一些性能改进。在相关问题 更多 >
编程相关推荐