TCP_NODELAY
和MSG_DONWAIT
之间的区别是什么?我理解一个是特定于TCP而另一个是发送时的通用套接字选项,但这两个选项在不同的场景中表现不同吗?
就像TCP_NODELAY
一样,MSG_DONTWAIT
是否也禁用了Nagle算法?
具体来说,我试图通过我的本地局域网网络发送数据,我不希望我的套接字在发送时因为任何原因而卡住,我只是希望它发送数据包并立即返回。这是一个更好,更可靠的选择。 (这个问题特定于Linux套接字)
答案 0 :(得分:3)
TCP_NODELAY
在这里不会帮助你--Nagle算法只是关于数据如何在TCP堆栈中被缓存之前,并且不会影响程序中的控制流。你想要的是一个非阻塞套接字 - 发送呼叫将立即返回,你可以稍后查询它们以确定是否发生了任何事情。