[英]linux unix sockets vs tcp sockets send buffer size
我正在比较套接字是tcp时和unix套接字时,发送调用可以传输多少字节。
对于unix域套接字,该数字始终为219264,但是对于TCP,此数字高得多。为什么会有这种差异? 两个程序都在同一台机器上执行
注意:套接字处于非阻塞模式
检查缓冲区大小,这些是值
Unix域套接字
receive buffer size =212992
send buffer size =212992
TCP套接字
receive buffer size =1062000
send buffer size =2626560
谁能解释我为什么有这个区别?
tcp缓冲区用于已发送但尚未被另一端确认的程序包,以及已乱序接收并等待延迟的程序包到达后再提供给应用程序的程序包。 当然,只要使用的应用程序不read()
数据,程序包也将保留在缓冲区中。
在UNIX套接字上,等待ACK的包或包的顺序不是问题,因此缓冲区可以较小。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.