我在CentOS 5.5 32位和CentOS 6.7 64位上用C ++部署套接字应用程序。我需要转换Nagle的算法,因为我正在与仪器进行通信,并且需要尽可能低的延迟。我用来关闭Nagle算法的代码如下。
if (!setsockopt(fd, IPPROTO_TCP, TCP_NODELAY, (char *)&val, sizeof(val)))
return SUCCESS;
else
return TRANSPORT_ERROR;
对于CentOS 5.5系统,Nagle的算法似乎没有被禁用。我可以在wireshark跟踪中看到,我的应用程序中的几个TCP写入在大约200ms延迟后被捆绑在一个数据包中。
CentOS 6.7中的整个应用程序运行时间不到25毫秒。据我所知,数据包捆绑在一起的唯一方法是Nagle的算法。这是准确的,还是我缺少的东西?
任何人都可以提供的帮助将不胜感激。