socket套接字选项
2016-09-30 11:45
1291 查看
本文写作背景基于对多网卡的配置,要求实现多个网卡同时上网,并且能指定
仅针对linux下的socket选项进行整理分析。
仅针对linux下的socket选项进行整理分析。
SOL_SOCKET 1 SO_DEBUG:启用套接字调试,只允许具备CAP_NET_ADMIN权限或有效进程ID为0的进程使用 SO_REUSEADDR: <1>允许启动一个监听服务器并捆绑其众所周知端口,即使以前建立的将此端口用做他们的本地端口的连接仍存在。 <2>允许在同一端口上启动同一服务器的多个实例,只要每个实例捆绑一个不同的本地IP地址即可。 <3>允许单个进程捆绑同一端口到多个套接口上,只要每个捆绑指定不同的本地IP地址即可。 <4>允许完全重复的捆绑,一般来说,这个特性仅支持多播的系统,而且只对UDP套接口。 SO_TYPE:获取套接字类型(诸如SOCK_STREAM) SO_ERROR:获取并清除未决的套接字错误。只读选项,返回一个整数值。 SO_DONTROUTE:不通过网关转发,直接发送给直接连接的主机。 SO_BROADCAST 6 SO_SNDBUF 7 SO_RCVBUF 8 SO_SNDBUFFORCE 32 SO_RCVBUFFORCE 33 设置接收和发送区缓存大小,文件位于/proc/sys/net/core/目录下的wmem_default,wmem_max,rmem_default,rmem_max。*FORCE的区别在于可以修改最大值的限制。 SO_KEEPALIVE:在面向连接的套接字上启用keep-alive消息发送 SO_OOBINLINE:如果启用此选项,带外数据直接放置在数据流中;否则,带外数据只能以MSG_OOB调用recv传递 SO_NO_CHECK 11 SO_PRIORITY 12 SO_LINGER:如果启用,close或shutdown调用将阻塞直到所有排队的消息被成功发送或者超时。 SO_BSDCOMPAT 14 SO_REUSEPORT 15 SO_PASSCRED 16 SO_PEERCRED 17 SO_RCVLOWAT SO_SNDLOWAT 指定套接层传递数据到协议(SO_SNDLOWAT)或用户接收(SO_RCVLOWAT)时,缓冲区至少应该有多少字节数。两个值都初始化为1。SO_SNDLOWAT在Linux下是不可修改的。SO_RCVLOWAT从Linux 2.4开始可以修改。现行的select和poll系统调用并不理会Linux上的SO_RCVLOWAT设置,哪怕只有1字节可用也会标记套接字可读,接着的读取会被阻塞,直到SO_RCVLOWAT字节数可用。 SO_RCVTIMEO SO_SNDTIMEO 指定接收或发送报告错误之前的超时值。参数是一个timeval结构。如果一个输入或输出函数在这段时间内阻塞,数据也已经被发送或接收,则其返回值将是传输的数据量;如果没有传输任何数据而超时,则其返回-1并设置EAGAIN或EWOULDBLOCK,就好像套接字是非阻塞的一样。如果超时值设置为0,则操作将一直阻塞。超时只是针对执行套接字I/O的系统调用如read,recvmsg,send,sendmsg有效,对select,poll,epoll_wait等则无效。 SO_SECURITY_AUTHENTICATION 22 SO_SECURITY_ENCRYPTION_TRANSPORT 23 SO_SECURITY_ENCRYPTION_NETWORK 24 SO_BINDTODEVICE: 将套接字绑定到一个特定设备,通过接口名称诸如“eth0”指定。如果名称是一个空字符串或长度为0,则移除设备。传递的选项是一个可变长度的,空字符结尾的本地接口名称字符串,最大长度是IFNAMSIZ。如果一个套接字绑定到一个接口,则它只能处理特定接口上接收的包。注意,只能在几种套接字类型上工作,特定于AF_INET。 SO_ATTACH_FILTER 26 SO_DETACH_FILTER 27 SO_GET_FILTER SO_ATTACH_FILTER SO_PEERNAME 28 SO_TIMESTAMP 29 SCM_TIMESTAMP SO_TIMESTAMP SO_ACCEPTCONN:只能用于getsockopt。0代表套接字不是监听套接字,1则代表是。 SO_PEERSEC 31 SO_PASSSEC 34 SO_TIMESTAMPNS 35 SCM_TIMESTAMPNS SO_TIMESTAMPNS SO_MARK 36 SO_TIMESTAMPING 37 SCM_TIMESTAMPING SO_TIMESTAMPING SO_PROTOCOL 38 SO_DOMAIN 39 SO_RXQ_OVFL 40 SO_WIFI_STATUS 41 SCM_WIFI_STATUS SO_WIFI_STATUS SO_PEEK_OFF 42 SO_NOFCS SO_LOCK_FILTER SO_SELECT_ERR_QUEUE SO_BUSY_POLL SO_MAX_PACING_RATE SO_BPF_EXTENSIONS SO_INCOMING_CPU SO_ATTACH_BPF SO_DETACH_BPF SO_DETACH_FILTER
相关文章推荐
- 常用套接字选项(SOL_SOCKET级别)
- socket默认的套接字选项,setsockopt/getsockopt
- UNIX网络编程——套接字选项(SOL_SOCKET级别)
- socket套接字选项列表
- UNIX网络编程——套接字选项(SOL_SOCKET级别)
- UNIX网络编程——常用套接字选项(SOL_SOCKET级别)
- UNIX网络编程——套接字选项(SOL_SOCKET级别)
- socket套接字选项列表
- 常用套接字选项(SOL_SOCKET级别)
- SOCKET套接字选项
- socket网络编程中常用的SO_KEEPALIVE套接字选项
- socket编程(2)套接字选项
- socket套接字选项和模式
- java网络编程--socket套接字
- Java套接字Socket编程--TCP参数
- 通过套接字(socket)和UDP协议实现网络通信
- 使用socket套接字通过http协议实现文档下载功能
- 进程间通信系列 之 socket套接字实例
- socket 套接字编程笔记——IP地址转换
- Linux C语言编程-Linux网络通信--Linux上使用套接字(socket)来发送信息---知识点总结+实例