我读过 Winsock 上的 send() 函数会阻塞,直到收到最后一个数据包的 ACK。现在我正在使用服务器进行回合制角色扮演游戏。一切都由一个线程处理(对于 64 个套接字)。接收、处理请求并将响应写入套接字。这个过程不能中断。
是否可以使用这种方法处理 1000 个客户端(每 64 个套接字一个线程)?
如果 send() 完成时间过长或者客户端恶意不发送 ACK 或连接中断,它不会阻塞整个服务器吗?
我应该将网络和请求处理的逻辑拆分为 2 个线程吗?如果是这样,处理网络传输的线程仍然可能被 send() 或 recv() 阻塞。
还是最好使用重叠 I/O?