EAGAIN 误会 TCP_NODELAY
文章目录
尽管 TCP 客户端设置 TCP_NODELAY
,服务器仍须读到 EAGAIN
才算完成一个 EPOLLIN
事件。
一开始以为客户端设置了 TCP_NODELAY
选项就表示每一次发包都会触发新事件,测试结果不是这样的。
很容易理解,TCP_NODELAY
只是不让底层拼包。而服务器端的底层接收到数据仍然是来了就放入接收缓冲区,而 epoll 只管应用层。
尽管 TCP 客户端设置 TCP_NODELAY
,服务器仍须读到 EAGAIN
才算完成一个 EPOLLIN
事件。
一开始以为客户端设置了 TCP_NODELAY
选项就表示每一次发包都会触发新事件,测试结果不是这样的。
很容易理解,TCP_NODELAY
只是不让底层拼包。而服务器端的底层接收到数据仍然是来了就放入接收缓冲区,而 epoll 只管应用层。