2012-08-17 31 views
2

有人在发送小块数据(几个字节)时知道Unix套接字的缓冲特性吗?当使用TCP套接字时,我可以禁用Nagle算法来防止数据传输中的延迟,但没有等效(我知道的)Unix域套接字的功能。Unix套接字的缓冲特性

谢谢。

回答

4

unix域套接字上没有可用的nagle算法。

Unix套接字通常作为操作系统内核中的内存缓冲区来实现。在套接字上写入/发送数据后,它将被复制到该缓冲区中,并立即变为可用于对等体。

+2

对。虽然在POSIX中没有详细说明它的速度。这是系统特定的。例如,Linux确保您立即获取数据:如果您在非阻塞套接字上调用'write',然后立即“读取”另一端,它会承诺返回数据。我没有阅读所有常见unix的文档,但是我已经编写了这个假设的代码,并且它在Solaris,Darwin,AIX,FreeBSD和HP-UX上运行良好,所以依赖它似乎是安全的。如果我错了,请纠正我! – 2012-08-17 17:31:00

+0

@NicholasWilson我看不出有什么理由说明为什么写入的数据不能立即在任何平台上使用。 – EJP 2012-08-18 09:39:39