Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/160.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何在Solaris上的BSD套接字上设置TCP_节点延迟?_C++_C_Solaris_Sockets - Fatal编程技术网

C++ 如何在Solaris上的BSD套接字上设置TCP_节点延迟?

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 &

我尝试使用以下方法关闭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 <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程序,所以我不得不将它改为