您的位置:首页 > 其它

详谈:socket套接字

2018-09-27 22:41 78 查看

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被关闭或服务器进程终止后马上释放该服务器的端口,
否则操作系统会保留几分钟该端口。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: