TCP_NODELAY和MSG_DONTWAIT之间有什么区别

时间:2012-01-30 07:04:26

标签: linux sockets tcp

TCP_NODELAYMSG_DONWAIT之间的区别是什么?我理解一个是特定于TCP而另一个是发送时的通用套接字选项,但这两个选项在不同的场景中表现不同吗?   就像TCP_NODELAY一样,MSG_DONTWAIT是否也禁用了Nagle算法?

具体来说,我试图通过我的本地局域网网络发送数据,我不希望我的套接字在发送时因为任何原因而卡住,我只是希望它发送数据包并立即返回。这是一个更好,更可靠的选择。 (这个问题特定于Linux套接字)

1 个答案:

答案 0 :(得分:3)

TCP_NODELAY在这里不会帮助你--Nagle算法只是关于数据如何在TCP堆栈中被缓存之前,并且不会影响程序中的控制流。你想要的是一个非阻塞套接字 - 发送呼叫将立即返回,你可以稍后查询它们以确定是否发生了任何事情。