119得票8回答
TCP选项SO_LINGER (0)是在什么情况下需要使用?

我认为我理解这个选项的正式含义。在我现在处理的一些旧代码中,使用了该选项。客户抱怨在连接关闭时从其方面发送FIN作为响应的RST。 我不确定是否可以安全地将其删除,因为我不理解何时应该使用它。 请您举一个需要使用该选项的例子好吗?

112得票3回答
SO_REUSEADDR(setsockopt选项)的含义是什么? - Linux

来自 man 手册: SO_REUSEADDR 指定在验证传递给 bind() 的地址时应使用的规则,如果协议支持,则应允许重用本地地址。此选项采用 int 值。这是一个布尔选项。 我什么时候应该使用它?"重用本地地址" 是什么意思?

34得票1回答
TCP_NODELAY在Ubuntu上找不到。

我正在尝试通过设置TCP_NODELAY参数来禁用Ubuntu Linux框上TCP套接字中的Nagle算法。但是,出于某种原因,这个常量在<sys/types.h>或<sys/socket.h>中没有定义。这个常量是不是已经被弃用并从Linux中删除了,还是我只是漏掉...

24得票7回答
添加IPV6_V6ONLY标志的动机是什么?

在IPv6网络中,IPV6_V6ONLY标志用于确保套接字只使用IPv6,特别是该套接字不会使用IPv4到IPv6映射。在许多操作系统上,IPV6_V6ONLY默认未设置,但在某些操作系统(例如Windows 7)上,默认设置为启用。 我的问题是:引入此标志的动机是什么? IPv4到IPv6...

15得票3回答
如何在使用urllib2加载URL时设置TCP_NODELAY标志?

我正在使用urllib2加载网页,我的代码如下:httpRequest = urllib2.Request("http:/www....com") pageContent = urllib2.urlopen(httpRequest) pageContent.readline() 我该如何获取套...

15得票4回答
加入多播组时调用setsockopt出现错误"No such device"

我有一段发送多播数据报的代码。 关键部分的代码如下: uint32_t port; int sockfd, err_ip; const uint32_t sizebuff = 65535 - (20 + 8); unsigned char *buff = (unsigned char *) ...

13得票1回答
套接字编程 - setsockopt:协议不可用?

我在 C 语言中进行基本的 socket 编程,但在我尝试在每台电脑上运行代码时都遇到了这个错误。代码编译没有问题,但当我尝试运行时,会出现 setsockopt: Protocol not available 的错误。这似乎不是一个很常见的错误,但我在每台尝试运行的 MacOS 电脑上都遇到...

11得票2回答
为什么改变SO_RCVBUF的值没有效果?

我正在编写一个程序,创建一个RAW套接字以便读取所有的流量。在调用socket()和recvfrom()之间(后者在循环中,以获取缓冲区中的所有数据包),我等待5秒。 当我运行程序时,我使用hping3命令发送大约200个数据包到我的程序中的“更快模式”(以尽快填充缓冲区)。一旦5秒钟过去,...

10得票3回答
在C语言中设置TCP接收窗口并在Linux上使用tcpdump

我正在运行一个Linux机器,版本为2.6.9-55.ELsmp,x86_64。 我正在尝试使用C语言中的setsockopt()函数来设置TCP接收窗口。我尝试以下代码:rwnd = 1024; setsockopt(sock, SOL_SOCKET, SO_RCVBUF, (char *...

9得票2回答
SO_SNDBUF的作用是什么?

我无法理解以下代码片段如何以及为什么能够工作: /* Now lets try to set the send buffer size to 5000 bytes */ size = 5000; err = setsockopt(sockfd, SOL_SOCKET,...