问题标签 [setsockopt]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
388 浏览

sockets - BSD套接字设置sockopt选项以避免在下一次发送之前等待确认

我正在尝试使用专有的简单原始 TCP 协议通过以太网发送一些 KB 的数据。

标准 Windows 配置要求在返回确认数据包之前接收两 (2) 个数据包,除非您使用 TcpAckFrequency = 1 修改注册表,在这种情况下,一个接收到的数据包足以发送回确认,否则无论如何您将在 TcpDelAckTicks 之后收到一个 ACK * 默认情况下 100 = 200 毫秒(这是另一个注册表项)。如果我以小于 1460 字节的块发送数据,这是一个问题,因为每个块将在 200 毫秒后得到确认,并且发送者将在发送下一个数据包之前等待。一种解决方案是发送大于 1460 字节的数据,以便实际发送两个数据包并接收 ACK。

但是,如果我想发送更小的数据包呢?有没有办法用 setsockopt 配置套接字,以便在发送下一个数据包之前不等待确认数据包?

非常感谢您提前。

0 投票
1 回答
843 浏览

c++ - 无法设置 IP_TTL 和 IP_TOS Setsockopt

我已经定义了一个 UDP 套接字

// 标识符 IP_TTL 未定义

// 标识符 SOL_IP 和 IP_TOS 未定义

我收到编译错误我是否缺少一些 HeaderFile

0 投票
1 回答
7228 浏览

c - 在 Linux 中将过滤器附加到原始套接字

这个问题是这个的下一步。

我将代码更改为使用 AF_PACKET 套接字,但这一次,我的应用程序需要处理大量流量。我决定使用 LSF 过滤器来减少我的应用程序的工作量。

这是我的新程序:

根据这个,我的套接字的初始化似乎是正确。但是,最终setsockopt失败并显示“协议不可用”。任何建议将不胜感激。

0 投票
1 回答
1401 浏览

c# - 当我将 ReuseAddress 设置为 true 时,为什么没有来自 BeginReceive 的回调?UDP

我正在为 UDP 接收和发送功能创建一个 C# 套接字,并为接收提供异步回调函数。很简单,对!消除所有皱纹需要一段时间,但它确实有效......好吧,只要你占领港口!我需要允许其他应用程序使用相同的端口号。没问题,对!有一个选项,SetSocketOption(...) for ReuseAddress ...

为什么当我将 ReuseAddress 设置为 true 时,回调函数不再被命中?

0 投票
1 回答
1149 浏览

sockets - 如何在启用 keepalive 选项的情况下检测死客户端

正如我在标题中提到的,我正在使用 keepalive 选项来检测服务器端的死客户端。在连接的 tcp 套接字上启用 keepalive 的代码片段如下所示。其他操纵 keepalive 行为的选项,如 TCP_KEEPCNT、TCP_KEEPIDLE、TCP_KEEPINTVL 等,默认情况下是系统。

在服务器端,在已连接的套接字上,服务器线程将处于 recv 调用中,等待客户端向服务器发送命令。这个的代码片段看起来像这样。

当客户端正常关闭时,recv 调用返回 0,我确保客户端已终止。所以我的问题是当keepalive检测到死客户端时recv返回什么?或者它是否为系统错误变量设置了错误,我可以从“get_last_sock_error”中读取它并确保客户端已死。谢谢。

0 投票
2 回答
13881 浏览

c++ - 套接字上的 IP_ADD_MEMBERSHIP,套接字也会监听单播吗?

考虑下面的代码,

我正在尝试为多播绑定 UDP 套接字。
我已经将它绑定到一个特定的端口,并设置IP_ADD_MEMBERSHIP了要监听的地址。

我的问题:套接字会接收到该端口的单播 UDP 数据包吗?如果是这样,我该如何预防?我希望只接收多播。

0 投票
0 回答
322 浏览

c - 如何正确使用套接字重用地址选项

我现在正在调试我的套接字应用程序,包括持续运行和关闭它。我的问题是当我运行并关闭它然后再次运行时,我收到10048错误代码,表明地址已在使用中。我尝试将套接字描述符设置为,但如果我一致地运行和关闭我的应用程序,SO_REUSEADDR仍然会收到10048错误代码。

0 投票
2 回答
1593 浏览

linux - 做一组后getsockopt SO_RECVBUF在linux中显示两倍的值?

当使用 SO_RECVBUF 调用 setsockopt,然后转身使用 SO_RECVBUF 调用 getsockopt 时,它似乎告诉我它将缓冲区大小设置为我请求设置的两倍。有人知道为什么会这样吗?

有问题的代码:

https://gist.github.com/rdp/8443238

输出:

仅在 linux 中,在其他操作系统上似乎将其报告为我设置的值。谢谢你。

0 投票
1 回答
9087 浏览

c - 设置套接字选项为什么对于 ICMP 请求中的套接字 (IP_HDRINCL) 如此重要?

我是套接字编程的新手

我看到了一个ICMP请求程序,因为他们习惯setsockopt了一个socket

int on = 1;

但是即使我不使用这个语句,程序也可以正常运行。为什么向内核提及这个包括 IP 结构的套接字如此重要?

0 投票
1 回答
1716 浏览

c++ - setsockopt 返回错误 10014

我正在尝试编写一个简单的 UDP 服务器,它在多播组上通告其服务端口,但我无法让多播工作。我尝试查看 Microsoft 文档并复制/粘贴他们的一些代码,但它不起作用。这是有问题的代码:

任何帮助,将不胜感激。