setsockopt相关内容

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

我正在制作一个程序,它创建一个 RAW 套接字以读取所有流量.在 socket() 和 recvfrom() 调用之间(最后一个在循环中以从缓冲区中取出所有数据包)我等待 5 秒. 当我运行程序时,我以“更快模式"(以快速填充缓冲区)向我的程序发送了大约 200 个带有 hping3 命令的数据包.5 秒过后,我的程序从缓冲区中提取了大约 150 个数据包. 我尝试更改接收缓冲区的大小 ..
发布时间:2021-12-11 11:16:49 其他开发

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

我想我理解选项的正式含义.在我现在处理的一些遗留代码中,使用了该选项.客户抱怨 RST 作为从其一侧关闭连接时对 FIN 的响应. 我不确定我是否可以安全地移除它,因为我不知道什么时候应该使用它. 您能否举例说明何时需要该选项? 解决方案 将 SO_LINGER 超时设置为零的典型原因是为了避免 TIME_WAIT状态,占用服务器上的所有可用资源. 当一个 TCP 连接完 ..
发布时间:2021-12-11 10:58:09 其他开发

SO_REUSEADDR(setsockopt 选项)的含义是什么 - Linux?

来自手册页: SO_REUSEADDR 指定规则用于验证提供的地址to bind() 应该允许重用本地地址,如果这受支持协议.这个选项需要一个 int价值.这是一个布尔选项 我应该什么时候使用它?为什么要“重用本地地址"? 解决方案 TCP 的主要设计目标是在数据包丢失、数据包重新排序以及 — 此处的关键 — 数据包重复时允许可靠的数据通信. 当连接建立时,TCP/IP ..
发布时间:2021-12-03 13:13:45 服务器开发

BSD 套接字 setockopt 选项可避免在下一次发送之前等待确认

我正在尝试使用专有的简单原始 TCP 协议通过以太网发送一些 KB 的数据. 标准 Windows 配置要求在返回确认数据包之前接收两 (2) 个数据包,除非您使用 TcpAckFrequency = 1 修改注册表,在这种情况下,收到的一个数据包足以发回确认,否则您将获得一个默认情况下,TcpDelAckTicks * 100 = 200 ms 之后的 ACK(这是另一个注册表项).如果我 ..
发布时间:2021-09-04 20:10:22 其他开发

套接字编程-setsockopt:协议不可用?

我正在用 C 进行一些基本的套接字编程,但在我尝试运行代码的每台计算机上都遇到此错误.代码编译得很好,但是当我尝试运行它时,我收到错误 setsockopt: 协议不可用.这似乎不是一个很常见的错误,但我在每台尝试运行它的计算机上都会遇到它.所有电脑都是MacOS. #include #include #include #include #include #include #define 端口 ..
发布时间:2021-06-07 19:34:19 其他开发

在UDP套接字上即时更改SOL_SOCKET,SO_RCVBUF的可预期行为是什么?

如果在Linux系统上即时调整UDP服务器套接字的输入缓冲区大小,应该发生什么? setsockopt(袜子,SOL_SOCKET,SO_RCVBUF,...) 我对这些问题特别感兴趣: 如果我缩小到缓冲区中当前的大小以下,这会简单地删除最旧/最新的吗?数据报是否正确,或者是否可以刷新其中的所有内容,或更糟的是它会破坏数据,例如截断数据报? 缩小缓冲区会节省内存还是会阻止内存被系统 ..
发布时间:2021-05-30 18:38:23 其他开发

添加IPV6_V6ONLY标志的动机是什么?

在IPv6网络中,IPV6_V6ONLY标志用于确保套接字仅使用IPv6,尤其是不会将IPv4到IPv6映射用于该套接字.在许多操作系统上,默认情况下未设置IPV6_V6ONLY,但在某些操作系统(例如Windows 7)上,则默认设置. 我的问题是:引入此标志的动机是什么? IPv4到IPv6映射是否存在某些问题,因此人们需要一种禁用它的方法吗?在我看来,如果某人不想使用IPv4到IPv6 ..
发布时间:2021-02-09 18:36:37 其他开发

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

我认为我了解该选项的正式含义.在我现在处理的一些旧代码中,使用了该选项.客户抱怨RST是从侧面对FIN的响应,是对FIN的响应. 我不确定我可以安全地删除它,因为我不知道何时应该使用它. 能否请您举例说明何时需要使用该选项? 解决方案 将SO_LINGER超时设置为零的典型原因是为了避免大量处于TIME_WAIT状态的连接占用所有可用资源在服务器上. 当TCP连接被完全关 ..
发布时间:2020-05-17 03:14:25 其他开发

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

在手册页中: SO_REUSEADDR指定规则 用于验证提供的地址 bind()应该允许本地重用 地址,如果该地址受 协议.此选项需要一个整数 价值.这是一个布尔选项 我什么时候应该使用它?为什么“重用本地地址"有作用? 解决方案 TCP的主要设计目标是在发生数据包丢失,数据包重新排序和—的情况下允许可靠的数据通信.关键,这里—数据包重复. 很明显,在连接建立期间TCP/ ..
发布时间:2020-05-01 07:58:06 服务器开发

setsockopt的(SYS / socket.h中)

的原型是setsockopt的: INT的setsockopt(INT插座,INT水平,诠释OPTION_NAME,常量无效*请将option_value中,socklen_t opt​​ion_len); 有以下正确的?这是不? 一)。 INT BUFFSIZE = 50000; setsockopt的(S,SOL_SOCKET,SO_RCVBUF,(字符*)及BUFFSIZE,siz ..
发布时间:2016-08-22 15:55:59 C/C++

设置TCP用C接收窗口,并在Linux中使用tcpdump工作

我正在运行的Linux机器上运行2.6.9-55.ELsmp,x86_64的。 我想设置TCP接收窗口通过使用setsockopt()函数中使用C.我尝试以下方法: RW​​ND = 1024; setsockopt的(袜子,SOL_SOCKET,SO_RCVBUF,(字符*)及RWND,sizeof的(RWND)); 上面的code段是从服务器接收数据的客户端程序。当我开球的程序来接收 ..
发布时间:2016-08-18 23:19:04 服务器开发

为什么要改变SO_RCVBUF的值不起作用?

我在做这才能阅读所有流量创建一个原始套接字的程序。插座()和recvfrom()的调用之间(最后一个是在一个循环中摆脱来自缓冲区中的所有数据包)我等待5秒。 当我运行程序时,我送大约200包用hping3在«更快的模式»命令(填写速度快缓冲),以我的程序。只要5秒的流逝,我的程序从缓冲区中提取约150包。 我试图改变接收缓冲器的大小,以获得更好的结果是: int类型的= 65535; 如果 ..
发布时间:2016-08-17 23:33:07 C/C++