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

linux - SO_REUSEADDR(setsockopt选项)是什么意思-Linux?

从手册页:

SO_REUSEADDR 指定用于验证提供给 bind() 的地址的规则应该允许重用本地地址,如果协议支持的话。此选项采用 int 值。这是一个布尔选项

我应该什么时候使用它?为什么要“重用本地地址”?

0 投票
8 回答
150458 浏览

sockets - 什么时候需要 TCP 选项 SO_LINGER (0)?

我想我理解该选项的正式含义。在我现在处理的一些遗留代码中,使用了该选项。客户抱怨 RST 是从其一侧对 FIN 的响应,因为它从其一侧关闭连接。

我不确定我是否可以安全地移除它,因为我不知道什么时候应该使用它。

您能否举例说明何时需要该选项?

0 投票
5 回答
4504 浏览

c++ - 多播接收器套接字中的重复数据包

以下 MulticastReceiver 实现中似乎存在错误。

在为 <224.0.25.46,13001> 和 <224.0.25.172,13001> 创建两个实例时,我在每个流中获取每个数据包两次。任何指针?我的猜测是 REUSEADDR ?

请提出建议,当然,请指出可以进行的任何改进和优化。

0 投票
1 回答
21091 浏览

c++ - 在 Ubuntu 上找不到 TCP_NODELAY

我试图通过设置TCP_NODELAY参数在 Ubuntu Linux 机器上使用我的 TCP 套接字禁用Nagle 算法。出于某种原因,此常量未在or中定义。这个常量是否已被弃用,然后从 Linux 中删除,或者我只是遗漏了什么?<sys/types.h><sys/socket.h>

}

0 投票
1 回答
844 浏览

flash - 加入 DatagramSocket 上的多播组?

我想接收另一个应用程序在 AIR UDP 套接字(DatagramSocket)上多播的网络数据。

在其他编程语言中,这是通过调用(Java)“ sock.joinMulticastGroup(group) ”来实现的。在 C 中,这是一个简单的“ setsockopt ”调用。

我找不到任何关于如何使用等效的“setsockopt”(我还想更改接收缓冲区大小,另一个“ setsockopt ”调用)在 Adob​​e Flash(TCP 或 UDP)中精细控制套接字的任何信息。

如果有人知道它是否可能(或不可能),请告诉我。我非常绝望,我已经准备好有一个专用的应用程序(我将用 C 编写)来在本地接收多播数据并在 localhost TCP 或 UDP Flash 套接字上转发它!

非常感谢!:)

马蒂厄

PS:这是我在 Adob​​e 论坛上发布的一条消息的链接,但没有多大成功。周末我猜?;)

PPS:这是另一个让我害怕的链接,虽然这个问题可以追溯到 2008 年,但最后一个答案只有 3 个月大。

0 投票
1 回答
5826 浏览

c++ - setsockopt:C++ 中的错误文件描述符

我有著名的错误“地址已在使用中”,因为我没有检查绑定功能。

这是我的代码:

但是运行代码我得到了这个: setsockopt: Bad file descriptor

代码是正确的,来自指南 Beejnet。但为什么我得到了错误?也许代码的位置是错误的?

sock_fd 被调用的第一个是在函数 w_socket 中:

}

默认情况下有 sesockopt 但没有检查。我试过了,但它不起作用。

0 投票
2 回答
15190 浏览

c - SO_SNDBUF 的作用

我无法理解以下代码段的工作方式和原因:

如果我们检查发送缓冲区的值,它确实正确设置为 5000*2 = 10000。但是,如果我们尝试发送超过发送缓冲区大小的内容,它确实会发送所有内容。例如:

这打印出 30000。

这究竟是如何工作的?发送缓冲区大小限制为 10000 的事实没有任何影响吗?如果确实如此,究竟发生了什么?某种碎片化?

更新:如果套接字处于非阻塞模式会发生什么?我尝试了以下方法:

  1. 将缓冲区大小更改为 10000 (5000*2) 会导致发送 16384 个字节
  2. 将缓冲区大小更改为 20000 (10000*2) 会导致发送 30000 个字节

再说一遍,为什么?

0 投票
2 回答
4033 浏览

perl - 如何在 Perl 的套接字上设置“SO_RCVTIMEO”?

如果我这样尝试:

然后我的脚本因“setsockopt:[第 2 行] 的无效参数”而死亡。和pod 没有说,尽管 perlfunc 给出了一个例子IO::Socket,使它看起来像上面应该工作。perlfuncTCP_NODELAY

快速说明:我已经尽我所能回答了我自己的问题,但当然欢迎更好的答案。最明显的“更好”是它是可移植的,至少在 POSIX 机器上)

0 投票
1 回答
1532 浏览

tcp - tcp 窗口大小是否与 tcp 套接字的 SND_BUF 或 RCV_BUF 相关?

我想知道当我通过setsockopt API改变一个socket的SND_BUF时,TCP层原来的窗口大小会相应改变吗?

0 投票
2 回答
40294 浏览

c - 为什么更改 SO_RCVBUF 的值不起作用?

我正在制作一个创建 RAW 套接字以读取所有流量的程序。在调用 socket() 和 recvfrom() 之间(最后一个在循环中以从缓冲区中取出所有数据包)我等待 5 秒。

当我运行程序时,我用“更快模式”(快速填充缓冲区)的 hping3 命令向我的程序发送了大约 200 个数据包。5 秒过后,我的程序会从缓冲区中提取大约 150 个数据包。

我尝试更改接收缓冲区的大小以获得更好的结果:

然而,无论 «a » 的值是 1 还是 10000000,似乎都没有任何变化,我仍然从缓冲区中获得约 150 个数据包。

有什么问题?

编辑:« a » 的值通过getsockopt调用进行验证。