setsockopt(s,SOL_SOCKET,SO_SNDBUF,(const char*)&nSendBuf,sizeof(int)); 注意: 当设置TCP套接口接收缓冲区的大小时,函数调用顺序是很重要的,因为TCP的窗口规模选项是在建立连接时用SYN与对方互换得到的。对于客户,SO_RCVBUF选项必须在connect之前设置;对于服务器,SO_RCVBUF选项必须在listen前设置。 如下内容转...
setsockopt(sockfd, SOL_SOCKET,SO_SNDBUF,(const char*)&nSendBuf,sizeof(int));[before connect socket sendbuf]=>0x7fd9de14,sendbuf:16384,ret:0[before connect socket sendbuf]=>0x7fd9de14,rcvbuf:87380,ret:0connect success 31[after connect socket sendbuf]=>0x7fd9de14,sendbuf:327680,ret...
SO_DONTROUTE 不查找路由 int SO_ERROR 获得套接字错误 int SO_KEEPALIVE 保持连接 int SO_LINGER 延迟关闭连接 struct linger SO_OOBINLINE 带外数据放入正常数据流 int SO_RCVBUF 接收缓冲区大小 int SO_SNDBUF 发送缓冲区大小 int SO_RCVLOWAT 接收缓冲区下限 int SO_SNDLOWAT 发送缓冲区下限 int SO_RCVTIMEO...
SO_SNDBUF:发送缓冲区大小。 SO_RCVBUF:接收缓冲区大小。 SO_REUSEADDR:允许地址重用。 level为IPPROTO_TCP的选项: TCP_KEEPIDLE:TCP连接空闲时的超时时间。 TCP_KEEPINTVL:TCP保活探测的时间间隔。 TCP_NODELAY:禁用Nagle算法。 示例代码: #include<stdio.h>#include<sys/socket.h>#include<netinet/in.h>#inclu...
SO_RCVBUF:接收缓冲区大小。 SO_SNDBUF:发送缓冲区大小。 SO_ERROR:获取套接字的错误状态。 IPPROTO_TCP级别: TCP_NODELAY:禁用Nagle算法。 下面是一个示例,演示如何使用getsockopt函数获取SO_RCVBUF选项的值: use Socket; socket(my $sock, PF_INET, SOCK_STREAM, getprotobyname('tcp')) or die "socket: ...
Buffer size [Before]: 87380 alter--- 5002 5004 通过setsockopt设置SO_SNDBUF、SO_RCVBUF这连个默认缓冲区的值,再用getsockopt获取设置的值,发现返回值是设置值的两倍。 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
setsockopt(s,SOL_SOCKET,SO_SNDBUF,(const char*)&nSendBuf,sizeof(int)); 注意: 当设置TCP套接口接收缓冲区的大小时,函数调用顺序是很重要的,因为TCP的窗口规模选项是在建立连接时用SYN与对方互换得到的。对于客户,SO_RCVBUF选项必须在connect之前设置;对于服务器,SO_RCVBUF选项必须在listen前设置。
SO_RCVTIMEO 获取接收超时时间 SO_SNDTIMEO 获取发送超时时间 option_value:获取到的选项的值 option_len:value的长度 返回值: 成功:0 失败:-1 int opt_val; socklen_t opt_len = sizeof(opt_val); if(getsockopt(sockfd, SOL_SOCKET, SO_SNDBUF, &opt_val, &opt_len) < 0) { perror("fail to get...
當Windows Sockets 實作支援SO_RCVBUF和SO_SNDBUF選項時,應用程式可以要求不同的緩衝區大小, (較大或較小的) 。 即使實作未提供所要求的整個數量,setockopt的呼叫仍可成功。 應用程式必須使用相同的選項呼叫此函式,才能檢查實際提供的緩衝區大小。 SO_REUSEADDR ...