/*********************************************************************************
* 发布日期:2017-11-06
* 进度:未完成
* 作者:LuoTian
* 备注:套接字选项(重点)
/*********************************************************************************
level级别:SOL_SOCKET |
||||||||||||||||
optname(选项名) |
选项值数据类型 |
访问 |
说明 |
|||||||||||||
SO_ACCEPTCONN |
bool |
get |
如为TRUE(真) ,表明套接字处于监听模式 注:如果已通过Listen函数将套接字置入监听模式,这个选项会返回TRUE。SOCK_DGRAM类型的套接字不支持这一选项。 |
|||||||||||||
SO_BROADCAST |
bool |
get/set |
如TRUE,表明套接字已配置为发送广播消息 |
|||||||||||||
SO_CONDITIONAL_ACCEPT |
BOOL |
get/set |
允许用WSAAccept接受或拒绝真实的连接 |
|||||||||||||
SO_CONNECT_TIME |
int |
get |
返回套接字建立连接的时间,以秒为单位,如尚未连接,返回0xffffffff |
|||||||||||||
SO_DEBUG |
bool |
get/set |
如果TRUE,就允许调试输出 (W32不支持) |
|||||||||||||
SO_DONTLINGER |
bool |
get/set |
如果是TRUE,则禁用SO_LINGER |
|||||||||||||
SO_LINGER |
struct linger |
get/set |
设置或获取当前的拖延值 |
|||||||||||||
SO_DONTROUTE |
bool |
get/set |
如果TRUE,便直接向网络接口发送消息,毋需查询路由表 |
|||||||||||||
SO_ERROR |
bool |
get |
返回错误状态 |
|||||||||||||
SO_EXCLUSIVEADDRUSE |
bool |
get/set |
如果TRUE,套接字绑定的那个本地端口就不能重新被另一个进程使用 |
|||||||||||||
SO_KEEPALIVE |
bool |
get/set |
如果TRUE,套接字就会进行配置,在会话过程中发送”保持活动”消息 |
|||||||||||||
SO_MAX_MSG_SIZE |
unsigned int |
get |
对一个面向消息的套接字来说,一条消息的最大长度 |
|||||||||||||
SO_OOBINLINE |
bool |
get/set |
如果是TRUE,带外数据就会在普通数据流中返回 (W32不支持) |
|||||||||||||
SO_PROTOCOL_INFO |
WSAPROTOCOL_INFO |
get |
套接字绑定的那种协议的特征 |
|||||||||||||
SO_RCVBUF |
int |
get/set |
面向接收操作,为每个套接字分别获取或设置缓冲区长度 |
|||||||||||||
SO_REUSEADDR |
bool |
get/set |
如果是TRUE,套接字就可与一个正由其他套接字使用的地址绑定到一起,或与处在TIME_WAIT状态的地址绑定到一起 |
|||||||||||||
SO_SNDBUF |
bool |
get/set |
设置分配给套接字的数据发送缓冲区的大小 |
|||||||||||||
SO_TYPE |
int |
get |
返回指定套接字的类型(如SOCK_DGRAM和SOCK_STREAM等等) |
|||||||||||||
SO_SNDTIMEO |
int |
get/set |
获取或设置套接字上的数据发送超时时间(以毫秒为单位) |
|||||||||||||
SO_RCVTIMEO |
int |
get/set |
获取或设置与套接字上数据接收对应的超时时间值(以毫秒为单位) |
|||||||||||||
SO_UPDATE_ACCEPT_CONTEXT |
SOCKET |
get/set |
更新SOCKET状态 |
|||||||||||||
level级别:IPPROTO_IP |
||||||||||||||||
optname(选项名) |
选项值数据类型 |
访问 |
说明 |
|||||||||||||
IP_OPTIONS |
char[] |
get/set |
设置或获取IP头内的IP选项 |
|||||||||||||
IP_HDRINCL |
bool |
get/set |
如果是TRUE,IP头就会随即将发送的数据一起提交,并从读取的数据中返回 |
|||||||||||||
IP_TOS |
int |
get/set |
IP服务类型 |
|||||||||||||
IP_TTL |
int |
get/set |
IP协议的“存在时间” (TTL) |
|||||||||||||
IP_MULTICAST_IF |
unsigned long |
get/set |
获取或设置打算从它上面发出多播数据的本地接口 |
|||||||||||||
IP_MULTICAST_TTL |
int |
get/set |
为套接字获取或设置多播数据包的存在时间 |
|||||||||||||
IP_MULTICAST_LOOP |
bool |
get/set |
如果TRUE,发至多播地址的数据将原封不动地“反射”或“反弹”回套接字的进入缓冲区 |
|||||||||||||
IP_ADD_MEMBERSHIP |
struct ip_mreq |
set |
在指定的IP组内为套接字赋予成员资格 |
|||||||||||||
IP_DROP_MEMBERSHIP |
struct ip_mreq |
set |
将套接字从指定的IP组内删去(撤消成员资格) |
|||||||||||||
IP_DONTFRAGMENT |
bool |
get/set |
如果是TRUE,就不对IP数据报进行分段 |
|||||||||||||
level级别:IPPROTO_TCP | ||||||||||||||||
optname(选项名) |
选项值数据类型 |
访问 |
说明 |
|||||||||||||
TCP_NODELAY |
bool |
get/set |
若为TRUE, 就会在套接字上禁用Nagle算法 (只适用于流式套接字) |