我知道如何使用套接字和多线程,但我想与一个服务器和许多客户端聊天,因为服务器在输入时从每个客户端获取一个字符串,并在获取它之后将其发送给每个客户端除了寄件人。简单的聊天。
我不知道该怎么做因为一个问题突然出现,我希望能够同时在每个客户端上使用recv
,但这是常规聊天服务器的工作方式吗?他们为每个客户创建一个线程?如果我想在我的电脑中这样做,那么我有限吗?我编写了所有程序,我有一个动态的客户端结构数组,包括IP,端口和指向该套接字的指针(位于动态插槽中),我有一个动态数组sockaddr_in
结构 - 一切正常工作和编译,但我不确定如何同时获取所有客户端的消息,我真的需要为每个客户端提供一个线程吗?
答案 0 :(得分:1)
你应该意识到服务器没有任何理由没有一个或多个大型intel xeon处理器。每个请求都应该独立处理,并且最好尽快处理。在我的处理器上,如果有3700个单独的线程在运行,那很好,但我可以想象在网络服务器上还有更多。
您是否可以简单地遍历整个阵列并以这种方式为每个客户端修复消息?因为,即使你多线程,你的cpu将在线程之后运行线程并且消息不会被发送