我在c ++中有一些关于socket的问题!
第一个问题,假设他为游戏编写了一个服务器,他将同时播放200个人,但接受被阻止,因为他已经为一个客户服务,如何处理它?</ p>
第二个问题,如何下载所有当前连接的客户端列表,以便您可以向所有人发送消息?
答案 0 :(得分:1)
我在c ++中有一些关于socket的问题!
为了将来参考,请一次只发布一个问题。如果您有多个问题,请单独发布。
让我说他为游戏编写了一个服务器,他将同时播放200个人,但接受被阻止,因为他已经为一个客户服务,如何处理它?</ p>
在非阻塞模式下使用套接字,使用select()
/ (e)poll()
或其他回调机制来了解哪些套接字具有待处理活动以及何时。
否则,在一个单独的线程中使用accept()
,而不是用于为连接的客户端提供服务的其他线程。
如何下载所有当前连接的客户端的列表,以便您可以向所有人发送消息?
服务器负责跟踪其连接的客户端。然后它可以在需要时循环遍历该列表。
如果客户想要向每个其他客户端发送消息,最好的选择是将单个消息发送到服务器并要求服务器将消息中继到其他每个客户端。
否则,客户端必须从服务器请求列表,然后单独向每个其他客户端发送消息。