我正在编写一个聊天程序,对于服务器,当我发送数据时,send() 函数是否需要很长时间才能发送数据?
这是我的问题:我正在使用带有 epoll 的 linux 2.6,单线程中的服务器 如果 send() 阻塞,那么这意味着服务器上的所有其他活动都将停止。就像如果有一个非常慢的客户端很长时间没有向 tcp 数据包发送 ACK 响应,那么发送函数会立即继续执行,还是会等待客户端很长时间。我不希望一个/几个慢客户端导致聊天服务器延迟。
我想要的是 send() 非阻塞并很快返回。如果它没有发送所有数据,它将简单地返回发送的数量,我将从缓冲区中删除它并在下次服务时继续发送,直到发送所有数据。基本上我不想在缓慢或无响应的客户端上长时间阻塞发送。