我正在尝试编写一个不使用线程的多聊天服务器。我遇到了select()
,但是我很难理解如何在send()
阻塞并且客户端套接字可能不准备好编写并且由于丢失而立即读取客户端请求并将其立即发送时服务器并行io能力。
If(fd_isset(socket,&read_fds){
Recv()
SendMesgToRequestedClient()
}
我认为可能的解决方案是为每个客户端保存待处理消息列表,并将其发送到fd_isset(socket,&write_fds)
上,但是我可能会使用大量的内存,而不是节省CPU。