我读过Winsock上的send()函数,直到收到最后一个数据包的ACK。现在我正在玩一款基于回合制角色扮演游戏的服务器。一切都由一个线程处理(对于64个套接字)。接收到请求后,处理并写入套接字的响应。这个过程不能被打断。Winsock send()阻止服务器?
是否可以使用此方法处理1000个客户端(每个64个套接字一个线程)?
如果send()花费很长时间才能完成,或者客户端恶意不发送ACK或连接中断,是不是会阻塞整个服务器?
我应该把网络和请求处理的逻辑分成2个线程吗?如果是这样,处理网络传输的线程仍可能被send()或recv()阻塞。
或者最好是使用重叠I/O?
你能解释为什么如果使用多个线程会有所不同?套接字是通过线程共享的吗? – Jori