如何在 Solaris 上的 BSD 套接字上设置 TCP_NODELAY?
我正在尝试使用以下方法关闭 BSD 套接字的 Nagle 算法:
setsockopt(newSock, IPPROTO_TCP, TCP_NODELAY, (char*)&flag, sizeof flag);
但编译器声称以前从未见过 TCP_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;
我也有-lnsl
和 -lsocket
链接器选项,但它无法编译。 我错过了什么吗?
所有这些都在 Solaris 8 计算机上进行。
I am trying to turn off Nagle's algorithm for a BSD socket using:
setsockopt(newSock, IPPROTO_TCP, TCP_NODELAY, (char*)&flag, sizeof flag);
but the compiler claims TCP_NODELAY
hasn't been seen before:
error: `TCP_NODELAY' undeclared (first use this function)
This is the full list of includes for the file this is in:
#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;
I also have the -lnsl
and -lsocket
linker options, but it just won't compile. Am I missing something?
All of this is on a Solaris 8 machine.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
看起来您缺少
#include
- 这是TCP_...
定义 live 的地方。Looks like you are missing
#include <netinet/tcp.h>
- that's whereTCP_...
defines live.我手边没有 Solaris 机器,只有 Linux 机器。
结果是:
也许你可以尝试类似的事情?
I don't have a Solaris box handy, only a Linux one.
results in:
Perhaps you could try something similar?