如何在 Solaris 上的 BSD 套接字上设置 TCP_NODELAY?

发布于 2024-07-25 16:28:11 字数 633 浏览 5 评论 0原文

我正在尝试使用以下方法关闭 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

贪恋 2024-08-01 16:28:11

看起来您缺少 #include - 这是 TCP_... 定义 live 的地方。

Looks like you are missing #include <netinet/tcp.h> - that's where TCP_... defines live.

守不住的情 2024-08-01 16:28:11

我手边没有 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  */

也许你可以尝试类似的事情?

I don't have a Solaris box handy, only a Linux one.

grep -ri TCP_NODELAY /usr/include/*

results in:

/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  */

Perhaps you could try something similar?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文