C++ 如何在Solaris上的BSD套接字上设置TCP_节点延迟?
我尝试使用以下方法关闭BSD套接字的Nagle算法:C++ 如何在Solaris上的BSD套接字上设置TCP_节点延迟?,c++,c,solaris,sockets,C++,C,Solaris,Sockets,我尝试使用以下方法关闭BSD套接字的Nagle算法: setsockopt(newSock, IPPROTO_TCP, TCP_NODELAY, (char*)&flag, sizeof flag); 但编译器声称以前从未见过TCP\u NODELAY: error: `TCP_NODELAY' undeclared (first use this function) 这是文件的完整包含列表,该文件位于: #include <arpa/inet.h> #include &
setsockopt(newSock, IPPROTO_TCP, TCP_NODELAY, (char*)&flag, sizeof flag);
但编译器声称以前从未见过TCP\u NODELAY
:
error: `TCP_NODELAY' undeclared (first use this function)
这是文件的完整包含列表,该文件位于:
#include <arpa/inet.h>
#include <fcntl.h>
#include <iostream>
#include <netdb.h>
#include <string>
#include <sys/socket.h>
#include <sys/types.h>
using namespace std;
#包括
#包括
#包括
#包括
#包括
#包括
#包括
使用名称空间std;
我还有-lnsl
和-lsocket
链接器选项,但它无法编译。我错过什么了吗
所有这些都在Solaris 8机器上。我手边没有Solaris设备,只有Linux设备
grep -ri TCP_NODELAY /usr/include/*
结果:
/usr/include/linux/tcp.h:#define TCP_NODELAY 1 /* Turn off Nagle's algorithm. */
/usr/include/netinet/tcp.h:#define TCP_NODELAY 1 /* Don't delay send to coalesce packets */
也许您可以尝试类似的方法?看起来您缺少了
#include
-这就是TCP.
定义live的地方。我在Solaris 10上尝试了这一点(我必须在您已经包含的标题之后添加它),并且效果很好。我在include中出错,但我尝试了一个C程序,所以我不得不将它改为