SO_SNDBUF 发送缓冲区大小 int
设置发送缓冲区保留大小
与 SO_MAX_MSG_SIZE 或TCP滑动窗口无关如果一般发送包很大很频繁那么解决这个选项
每个套接口都一个发送缓冲区和一个接收缓冲区 接收缓冲区被TCP和UDP用来将接收到数据一直保存到由解决进程来读 TCP:TCP通告另一端窗口大小 TCP套接口接收缓冲区不可能溢出因为对方不允许发出超过所通告窗口大小数据 这就TCP流量控制如果对方无视窗口大小而发出了超过宙口大小数据则接 收方TCP将丢弃它 UDP:当接收到数据报价装不进套接口接收缓冲区时此数据报价就被丢弃UDP没 流量控制;快发送者可以很容易地就淹没慢接收者导致接收方UDP丢弃数据报价
SO_RCVLOWAT 接收缓冲区下限 int
SO_SNDLOWAT 发送缓冲区下限 int
每个套接口都一个接收低潮限度和一个发送低潮限度它们函数selectt解决 接收低潮限度让select返回“可读”而套接口接收缓冲区中必须数据总量 ——对于一个TCP或UDP套接口此值缺省为1发送低潮限度让select返回“可写” 而套接口发送缓冲区中必须可用空间对于TCP套接口此值常缺省为2048 对于UDP解决低潮限度 由于其发送缓冲区中可用空间字节数从不变化只要 UDP套接口发送缓冲区大小大于套接口低潮限度这样UDP套接口就总可写 UDP没发送缓冲区只发送缓冲区大小
SO_RCVTIMEO 接收超时 struct timeval
SO_SNDTIMEO 发送超时 struct timeval
SO_REUSERADDR 允许重用本地地址和端口 int
充许绑定已被解决地址(或端口号)可以办法bindman
SO_EXCLUSIVEADDRUSE
独占模式解决端口就不充许和其它源代码解决SO_REUSEADDR共享解决某一端口
确定多重绑定解决谁时候根据一条原则谁指定最明确则将包递交给谁而且没权限之分也就说低级权限用户可以重绑定高级权限如服务启动端口上这非常重大一个安全隐患
如果不想让自己源代码被监听那么解决这个选项
SO_TYPE 获得套接字类型 int
SO_BS数码相机OMPAT 与BSD系统兼容 int
==========================================================================
IPPROTO_IP
--------------------------------------------------------------------------
IP_HDRINCL 数据包中包含IP首部 int
这个选项常用于黑客技术中隐藏自己IP地址
IP_OPTINOS IP首部选项 int
IP_TOS 服务类型
IP_TTL 生存时间 int
以下IPV4选项用于组播
IPv4 选项 数据类型 描 述
IP_ADD_MEMBERSHIP struct ip_mreq 加入到组播组中
IP_ROP_MEMBERSHIP struct ip_mreq 从组播组中退出
IP_MULTICAST_IF struct ip_mreq 指定提交组播报价文接口
IP_MULTICAST_TTL u_char 指定提交组播报价文TTL
IP_MULTICAST_LOOP u_char 使组播报价文环路效或无效
头文件中定义了ip_mreq结构:
[code:1:63724de67f]
struct ip_mreq {
struct in_addr imr_multiaddr; /* IP multicast address of group */
struct in_addr imr_interface; /* local IP address of interface */
};
[/code:1:63724de67f]
若进程要加入到一个组播组中用soketsetsockopt()函数发送该选项该选项类型ip_mreq结构它第一个字段imr_multiaddr指定了组播组地址第二个字段imr_interface指定了接口IPv4地址
IP_DROP_MEMBERSHIP
该选项用来从某个组播组中退出数据结构ip_mreq解决办法与上面相同
IP_MULTICAST_IF
该选项可以修改网络接口结构ip_mreq中定义新接口
IP_MULTICAST_TTL
设置组播报价文数据包TTL(生存时间)默认值1表示数据包只能本地子网中传送
IP_MULTICAST_LOOP
组播组中成员自己也会收到它向本组发送报价文这个选项用于抉择否激活这种状态