详谈:socket套接字
socket.setsockopt(level, optname, value)
①level:在套接字级别上(SOL_SOCKET),socket代表了一个协议栈的不同层,level参数指定了选项应用于哪一层。
level的取值以SOL_开头(SOL_SOCKET,SOL_TCP等等),它还可以通过设置一个特殊协议号码来设置协议选项,
然而对于一个给定的操作系统,大多数协议选项都是明确的,所以为了简便,它们很少用于为移动设备设计的应用程序。
一般为SOL_SOCKET
②option_name可以有以下取值:
SO_DEBUG,打开或关闭调试信息。
SO_REUSEADDR,打开或关闭地址复用功能。
SO_DONTROUTE,打开或关闭路由查找功能。
SO_BROADCAST,允许或禁止发送广播数据。
SO_SNDBUF,设置发送缓冲区的大小。其上限为256 * (sizeof(struct sk_buff) + 256),下限为2048字节。
SO_RCVBUF,设置接收缓冲区的大小。上下限分别是:256 * (sizeof(struct sk_buff) + 256)和256字节。
SO_KEEPALIVE,套接字保活。
SO_OOBINLINE,紧急数据放入普通数据流。
SO_NO_CHECK,打开或关闭校验和。
SO_PRIORITY,设置在套接字发送的所有包的协议定义优先权。
SO_LINGER,如果选择此选项, close或 shutdown将等到所有套接字里排队的消息成功发送或到达延迟时间后才会返回. 否则, 调用将立即返回。
SO_PASSCRED,允许或禁止SCM_CREDENTIALS 控制消息的接收。
SO_TIMESTAMP,打开或关闭数据报中的时间戳接收。
SO_RCVLOWAT,设置接收数据前的缓冲区内的最小字节数。
SO_RCVTIMEO,设置接收超时时间。
SO_SNDTIMEO,设置发送超时时间。
SO_BINDTODEVICE,将套接字绑定到一个特定的设备上。
SO_ATTACH_FILTER和SO_DETACH_FILTER。
③value取值:
比如S.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1)
这里value设置为1,表示将SO_REUSEADDR标记为TRUE,
操作系统会在服务器socket被关闭或服务器进程终止后马上释放该服务器的端口,
否则操作系统会保留几分钟该端口。
- Linux下套接字详解(二)----套接字Socket
- 客户咨询<基于UDP协议的Socket编程(数据报式套接字)>
- 套接字(socket) 端口
- Socket套接字API简介
- Socket编程--套接字概念
- OSI七层参考模型 TCP与UDP、IP、ICMP 如何编写Socket套接字? 端口号
- 兔子-error: could not install *smartsocket* listener: cannot bind to 127.0.0.1:5037: 通常每个套接字地址(协议/网络地址
- socket套接字写的简单客服、服务器端
- Socket套接字
- ss命令,Socket Statistics 查看套接字信息
- C#2.0 Socket套接字编程之实例初探
- VxWorks网络系统(1) -- socket打开套接字函数
- Java 套接字(Socket)
- WinSocket编程——原始套接字
- UNIX环境高级编程学习之第十六章网络IPC:套接字 - 简单UDP Socket 通信
- 套接字 socket入门级知识
- UNIX域套接字——UNIX domain socket(DGRAM)
- 详谈socket请求Web服务器过程
- Windows套接字(Socket)例子(源码,实例)
- 【Socket编程】套接字Windows平台C语言实现