【问题标题】:Buffering characteristics of Unix SocketsUnix Sockets 的缓冲特性
【发布时间】:2012-08-14 03:39:36
【问题描述】:

有谁知道 Unix 套接字在发送小块数据(几个字节)时的缓冲特性吗?

当我使用 TCP 套接字时,我可以禁用 Nagle 算法以防止数据传输中的延迟。但是 Unix 域套接字没有等效的功能(据我所知)。

【问题讨论】:

    标签: c linux sockets buffering unix-socket


    【解决方案1】:

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

    Unix 套接字通常被实现为操作系统内核中的内存缓冲区。一旦您在套接字上写入/发送数据,它就会被复制到该缓冲区中,并立即可供对等方使用。

    【讨论】:

    • 对。尽管在 POSIX 中并没有具体说明速度有多快。那是系统特定的。例如,Linux 保证您立即获取数据:如果您在非阻塞套接字上调用write,然后立即在另一端调用read,它承诺返回数据。我还没有阅读所有常见 unix 的文档,但我已经根据这个假设编写了代码,并且它在 Solaris、Darwin、AIX、FreeBSD、HP-UX 上也可以正常运行,因此依赖它似乎是安全的。如果我错了,请纠正我!
    • @NicholasWilson 我看不出有任何理由说明已写入的数据不会立即在任何平台上可用。
    猜你喜欢
    • 2019-12-18
    • 2013-01-09
    • 2012-01-14
    • 1970-01-01
    • 2015-05-01
    • 2012-08-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-20
    相关资源
    最近更新 更多