问题标签 [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 投票
0 回答
417 浏览

c++ - 套接字选项 SO_RCVTIMEO 不准确?

我使用hiredis redisSetTimeout函数设置超时10ms,当我启动100个线程时它是准确的10ms,但是当我启动1000个线程时,redisVCommand中的一些调用花费300+ms,而不是超时,谁能详细解释一下?

redisSetTimeout 函数调用如下系统函数

0 投票
2 回答
1378 浏览

c++ - OSX 上 TCP_USER_TIMEOUT 的 setsockopt 选项名称是什么

我正在尝试将一些代码移植到 OSX - 似乎setsockopt与 Linux 有一些不同。到目前为止,我发现并纠正的是使用 TCP_KEEPALIVE 而不是 TCP_KEEPIDLE。

OSX 的 TCP_USER_TIMEOUT 等价于什么?

使用 TCP_USER_TIMEOUT 编译失败并打印undeclared identifier错误

0 投票
1 回答
2461 浏览

sockets - 设置超时 TCP [ setsockopt + SO_RCVTIMEO ]

当我想用特定的套接字设置超时时,我想问一些事情我调用这个函数

它运行良好

现在我的问题

如果我将clientsocket设置为特定的超时..我怎样才能返回clientsocket所以没有超时?

例如设置超时(3000);收视率

然后在recv之后我想将它返回到没有超时的状态如何?

对你的帮助表示感谢 :)

0 投票
1 回答
1256 浏览

c - setsockopt() 中为 SO_RCVBUF 指定的新值何时生效?

我的查询与 setsocketopt() api 中的“SO_RCVBUF”选项有关。setsockopt() 中为 SO_RCVBUF 指定的新值何时生效?

我正在测试 TCP/IP 的流量控制,下面是我的环境。客户端程序是一个缓慢的阅读器,它只有一个套接字。为了测试流量控制,我在建立连接之后和接收数据之前将 SO_RCVBUF 的值减小到 5000 字节。我的期望是,我的服务器程序在发送 5000+ 字节后应该等待客户端读取。但是服务器程序将数据发送到 ~60000 字节。之后,服务器程序将等待客户端读取。一旦客户端读取了 ~55000 字节,我就会看到接收缓冲区的新值(5000 字节)被使用。

是预期的吗?我猜 setsocketopt() 的效果应该是立竿见影的。接收缓冲区的初始值在 setsocketopt() 之后应该没有任何影响。

问候, 普拉桑斯

0 投票
1 回答
595 浏览

zeromq - ZeroMQ, XSUB does not receive

I have implemented one publisher and one subscriber network using ZeroMQ. I used XPUB and XSUB, because I want the subscriber be able to send data to publisher as well. My code works for XPUB + SUB, meaning subscriber can receive data from publisher. However, it does not work for XPUB + XSUB. This is probably because I can NOT do "setsockopt(ZMQ_SUBSCRIBE, ... )". I always get "Invalid argument" error at run time. Here is my code:

What's wrong in the way I set subscriber.setsockopt? If I replace the XSUB by SUB, it works. However, then I can not do the subscribe.send(msg) in the code.

0 投票
0 回答
168 浏览

sockets - SOL_SOCKET 可以用于任何 optname 吗?

我对 SCTP 编程非常陌生,在进行故障排除和参考一本书(Unix 网络编程,W.Richard Stevens 着)时,我遇到了一些模棱两可的东西。根据该书,他们在此处此处将级别名称用作 SOL_SOCKET用于选项名称 (optname) 值 SCTP_INITMSG 和 SCTP_EVENTS,它们应该与 IPPROTO_SCTP 一起使用。两个代码都可以正常工作,所以我一定遗漏了一些东西,我觉得我遗漏了一些关键的东西。它是什么?请帮我解决这个问题。谢谢你。

0 投票
1 回答
1093 浏览

c - C UDP 套接字:任意 setsockopt 行为(使用 SO_RCVTIMEO)

SO_RCVTIMEO 根本没有在我的输出函数中创建超时条件。我正在使用 ARQ 滑动窗口协议设计文件传输服务。为了使事情井井有条,我从基本的停止等待开始。

这是我对 timeval 的初始化

这是我在准备 recvfrom 超时时使用该结构和套接字

这是应该超时的代码主体:

}

问题:超时没有触发,但是 setsockopt 也没有返回任何错误。我无法知道我做错了什么。

如果我还能做些什么来澄清我的问题或环境,请告诉我。如果您对调试有任何建议,我将不胜感激。

0 投票
1 回答
888 浏览

linux - 为什么 setsockopt 返回 EINVAL?

我正在尝试使用setsockopt函数将地址添加到接口的多播地址列表,但它失败并显示 errno EINVAL。我在内核代码中放了一些 printk,看起来 errno 最终是在内核packet_setsockopt函数中设置的,因为传递给 optlen 的值小于packet_mreq 结构的大小。对于我的一生,我无法弄清楚为什么会这样。以下是相关代码:

0 投票
1 回答
201 浏览

sockets - 如何从特定 IP 发送多播数据?

我正在尝试从先前添加到接口的别名 IP 将数据发送到多播组。我正在使用 IP_MULTICAST_IF 和别名 IP 调用 setsockopt()。但数据始终从该接口的默认 IP 发送。为了解释,我提供了一些代码。

ip addr show命令为ens33接口提供以下输出:

现在 setsockopt() 用作:

但是,它总是发送多播数据包,192.168.190.183并且在 setsockopt() 期间不会引发错误。

谁能解决这个问题?请帮忙。提前致谢。

0 投票
1 回答
1099 浏览

c++ - 在 Linux 中使用 setsockopt 设置连接超时

我正在编写一个尝试使用 QTcpSocket 连接到对等点的 linux Qt5/c++ 应用程序。我打电话

当对等点可用时,它运行良好并立即连接。但是,当对等方不可用时:我第一次调用上述方法时,连接等待 1 分钟,然后我收到 SocketTimeoutError (5)。然后,每个后续的连接调用可能会在我收到 ConnectionRefusedError (0) 之前等待一秒钟,或者可能等待整整一分钟(取决于测试的系统)。

我可以使用 setsockopt 来减少等待初始连接的时间吗?

我应该指出,我已经设置了一些套接字选项,以便快速通知我连接丢失(见下文)。希望这些不会导致 1 分钟的初始连接错误延迟: