- 论坛徽章:
- 0
|
SOL_SOCKET、IPPROTO_IP、IPPROTO_TCP和NSPROTO_IPX选项级别 int PASCAL setsockopt ( __in SOCKET s,/*套接字*/__in int level, /*选项级别*/__in int optname,/* 选项级别*/__in const char * optval,/* 目标选项的值*/__in int optlen );/* 目标选项的值*/int PASCAL getsockopt( __in SOCKET s, /*套接字*/__in int level, /*选项级别*/__in int optname, /* 选项级别*/__out char* optval, /* 返回目标选项的值*/__inout int * optlen); /* 返回目标选项的值*/ SOL_SOCKET选项级别选项值类型获取/设置Socket版本说明SO_ACCEPTCONN布尔值只能获取1+如为TRUE(真) ,表明套接字处于监听模式Chapter 9 Page 1SO_BROADCAST布尔值两种均可1+如TRUE,表明套接字已配置成对广播消息进行发送Chapter 9 Page 2~3SO_CONNECT_TIME整数只能获取1+返回套接字建立连接的时间,以秒为单位,如尚未连接,返回0xffffffff (微软专用)Chapter 9 Page 3SO_DEBUG布尔值两者均可1+如果TRUE,就允许调试输出 (W32不支持) Chapter 9 Page 3SO_DONTLINGER布尔值两者均可1+如果是TRUE,则禁用SO_LINGER Chapter 9 Page 3SO_LINGERstruct linger两者均可1+设置或获取当前的拖延值Chapter 9 Page 5~6SO_DONTROUTE布尔值两者均可1+如果TRUE,便直接向网络接口发送消息,毋需查询路由表 (微软无效) Chapter 9 Page 4SO_ERROR布尔值只能获得1+返回错误状态Chapter 9 Page 4SO_EXCLUSIVEADDRUSE布尔值两者均可2+如果TRUE,套接字绑定那个本地端口就不能重新被另一个进程使用Chapter 9 Page 4~5SO_KEEPALIVE布尔值两者均可1+如果TRUE,套接字就会进行配置,在会话过程中发送”保持活动”消息Chapter 9 Page 5SO_MAX_MSG_SIZE无符号整数只能获取2+对一个面向消息的套接字来说,一条消息的最大长度Chapter 9 Page 6SO_OOBINLINE布尔值两者均可1+如果是TRUE,带外数据就会在普通数据流中返回 (W32不支持) Chapter 9 Page 6SO_PROTOCOL_INFOWSAPROTOCOL_INFO只能获得2+套接字绑定的那种协议的特征Chapter 9 Page 7SO_RCVBUF整数两者均可1+面向接收操作,为每个套接字分别获取或设置缓冲区长度Chapter 9 Page 7SO_REUSEADDR布尔值两者均可1+如果是TRUE,套接字就可与一个正由其他套接字使用的地址绑定到一起,或与处在T IME_WAIT状态的地址绑定到一起Chapter 9 Page 7~8SO_SNDBUF布尔值两者均可1+设置分配给套接字的数据发送缓冲区的大小 Chapter 9 Page 8SO_TYPE整数只能获取1+返回指定套接字的类型(如SOCK_DGRAM和SOCK_STREAM等等)Chapter 9 Page 8SO_SNDTIMEO整数两者均可1+获取或设置套接字上的数据发送超时时间(以毫秒为单位)Chapter 9 Page 8SO_RCVTIMEO整数两者均可1+获取或设置与套接字上数据接收对应的超时时间值(以毫秒为单位)Chapter 9 Page 9SO_UPDATE_ACCEPT_CONTEXTSOCKET两者均可1+更新SOCKET状态 Chapter 9 Page 9 IPPROTO_IP选项级别选项值类型获取/设置Socket版本说明IP_OPTIONSchar[]两者均可1+设置或获取I P头内的I P选项 Chapter 9 Page 16~17IP_HDRINCL布尔值两者均可2+如果是TRUE,IP头就会随即将发送的数据一起提交,并从读取的数据中返回,如下表Chapter 9 Page 18表IP_HDRINCL: Chapter 9 Page 184位版本(ipv4 or ipv6)4位头长度(32位字一共有多少个)8位服务类型(参阅IP_TOS)16位总长(以字节为单位, ip头和数据共长)16位标识(对发出的每个ip包进行“唯一性”标定, 每发出一个数据包,系统都会递增这个值)3个1位标志 (仅在I P包需要分割为较小的包时才会用到)13位分段偏移 (仅在ip包需要分割为较小的包时才会用到)8位存在时间(参阅IP_TTL)8位协议类型(用于对进入的数据包组装,如:TCP, IDP, IGMP和ICMP等等)16位头检验和(校验和是指对整个I P头进行1 6位1的求余总和结果, 不针对实际的数据)32位源IP地址32位目标IP地址IP选项(如果有的话,详见IP_OPTIONS)数据表IP_HDRINCLIP_TOS整数两者均可1+IP服务类型Chapter 9 Page 19IP_TTL整数两者均可1+I P协议的“存在时间” (TTL)参数Chapter 9 Page 19IP_MULTICAST_IF无符号长整数两者均可1+获取或设置打算从它上面发出多播数据的本地接口 Chapter 9 Page 20IP_MULTICAST_TTL整数两者均可1+为套接字获取或设置多播数据包的存在时间Chapter 9 Page 20IP_MULTICAST_LOOP布尔值两者均可1+如果TRUE,发至多播地址的数据将原封不动地“反射”或“反弹”回套接字的进入缓冲区 Chapter 9 Page 20IP_ADD_MEMBERSHIPstruct ip_mreq只能设置1+在指定的I P组内为套接字赋予成员资格 Chapter 9 Page 20IP_DROP_MEMBERSHIPstruct ip_mre1只能设置1+将套接字从指定的I P组内删去(撤消成员资格)Chapter 9 Page 20IP_DONTFRAGMENT布尔值两者均可1+如果是TRUE,就不对I P数据报进行分段Chapter 9 Page 20 IPPROTO_TCP选项级别选项值类型获取/设置Socket版本说明TCP_NODELAY布尔值两者均可1+若为TRUE, 就会在套接字上禁用Nagle算法 (只适用于流式套接字) Chapter 9 Page 21 NSPROTO_IPX选项级别选项值类型获取/设置Socket版本说明 (仅适用于Microsoft IPX/SPX)IPX_PTYPE整数两者均可1+获取或设置I P X包的类型Chapter 9 Page 21IPX_FILTERPTYP整数两者均可1+获取或设置准备过滤的IPX包之类型Chapter 9 Page 22IPX_STOPFILTERPTYPE整数只能设置1+删除为指定IPX包设置的过滤器Chapter 9 Page 22IPX_DSTYPE整数两者均可1+获取或设置SPX头中的数据流字段值Chapter 9 Page 22IPX_EXTENDED_ADDRESS布尔值两者均可1+如果是TRUE,便允许对I P X包进行扩展定址Chapter 9 Page 22IPX_RECVHDR布尔值两者均可1+如果是T R U E,就随接收调用一起,返回IPX头Chapter 9 Page 22IPX_MAXSIZE整数只能获取1+返回I P X数据报的最大长度Chapter 9 Page 22IPX_ADDRESSIPX_ADDRESS_DATA只能获取1+返回具备I P X能力之适配器的有关信息Chapter 9 Page 22IPX_GETNETINFOIPX_NETNUM_DATA只能获取1+返回与一个指定I P X网络编号有关的信息Chapter 9 Page 23IPX_GETNETINFO_NORIPIPX_ADDRESS_DATA两者均可1+返回与一个指定I P X网络编号有关的信息Chapter 9 Page 23IPX_SPXGETCONNECTIONSTATUSIPX_SPXCONNSTATUS_DATA只能获取1+返回与一个已建立连接的S P X套接字有关的信息 Chapter 9 Page 23IPX_ADDRESS_NOTIFYIPX_ADDRESS_DATA只能获取1+若I P X适配器的状态发生改变,则发出异步通知 Chapter 9 Page 24IPX_MAX_ADAPTER_NUM整数只能获取1+返回存在的IPX适配器个数Chapter 9 Page 24~25IPX_RERIPNETNUMBERIPX_NETNUM_DATA只能获取1+返回一个网络编号的相关信息Chapter 9 Page 25IPX_RECEIVE_BROADCAST布尔值只能设置1+如果是TRUE,就不接收IPX广播包Chapter 9 Page 25PX_IMMEDIATESPXZCK布尔值两者均可1+如果是TRUE,就不在SPX连接上延迟发送ACK Chapter 9 Page 25~26 int WSAAPI WSAIoctl( __in SOCKET s, /*套接字*/ __in DWORD dwIoControlCode, /*预定义的标志*/ __in_bcount_opt(cbInBuffer) LPVOID lpvInBuffer, /*指向传递进入的值*/ __in DWORD cbInBuffer, /*传入数据的多少*/ __out_bcount_part_opt(cbOutBuffer, *lpcbBytesReturned) LPVOID lpvOutBuffer, /*返回信息缓冲区*/ __in DWORD cbOutBuffer, /*缓冲区的字节长度*/ __out LPDWORD lpcbBytesReturned, /*实际返回的字节数*/ __in_opt LPWSAOVERLAPPED lpOverlapped, /*重叠I/O */ __in_opt LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine); /*重叠I/O回调函数*/int PASCAL FAR ioctlsocket( __in SOCKET s, /*套接字*/ __in long cmd, /*预定义的标志*/ __inout u_long FAR *argp); /*命令参数*/IO控制命令函数输入输出Socket版本说明标准I/O控制命令FIONBIOioctlsocket/WSAIoct无符号长整数无1+将套接字置入非锁定模式, 而若设为0值,意味着套接字进入锁定模式Chapter 9 Page 26FIONREAD两者均可无无符号长整数1+返回在套接字上存在的数据量Chapter 9 Page 26SIOCATMARK两者均可无布尔值1+判断是否已读取了带外数据Chapter 9 Page 26~27其他I/O控制命令SIO_ENABLE_CIRCULAR-QUEUEINGWSAIoct布尔值布尔值2+如接收缓冲区队列溢出,则首先丢弃最早收到的消息Chapter 9 Page 27SIO_FIND_ROUTEWSAIoctSOCKADDR布尔值2+验证到指定地址的路由是否存在(W32不支持)Chapter 9 Page 27SIO_FLUSHWSAIoct无无2+判断是否已读取OOB数据Chapter 9 Page 27SIO_BROADCAST_ADDRESSWSAIoct无SOCKADDR2+为套接字地址家族返回一个广播地址Chapter 9 Page 28SIO_GET_EXTENSION_FUNCTION_POINTERWSAIoctGUID函数指针2+取得基层提供者特有一个函数指针Chapter 9 Page 28SIO_CHK_QOSWSAIoctDWORDDWORD2+为指定的套接字设置QOS属性Chapter 9 Page 28SIO_GET_QOSWSAIoct无QOS2+返回与套接字关联在一起的QOS结构Chapter 9 Page 29SIO_SET_QOSWSAIoctQOS无2+为指定套接字设置QOS属性Chapter 9 Page 29SIO_MULTIPOINT_LOOPBACKWSAIoct布尔值布尔值2+设置或调查多播数据是否循环返回套接字Chapter 9 Page 29SIO_MULTICAST_SCOPEWSAIoct整数整数2+设置或获取多播数据的存在时间值Chapter 9 Page 29~30SIO_KEEPLIVE_VALSWSAIocttcp_keepalivetcp_keepalive2+针对每一个连接,分别设置其TCP"保持活动”周期Chapter 9 Page 30SIO_RCVALLWSAIoct无符号整数无2+接收网络上的所有数据包Chapter 9 Page 30SIO_RCVALL_MCASTWSAIoct无符号整数无2+接收网络上的所有多播数据包Chapter 9 Page 30SIO_RCVALL_IGMPMCASTWSAIoct无符号整数无2+接收网络上的所有IGMP数据包Chapter 9 Page 31SIO_ROUTING_INTERFACE_QUERY两者均可SOCKADDR无2+可找到用来向远程机器发送数据的那个本地接口的地址Chapter 9 Page 31SIO_ROUTING_INTERFACE_CHANGEWSAIoctSOCKADDR无2+与一个端点连接的接口发生改变后,发出通知Chapter 9 Page 31SIO_ADDRESS_LIST_QUERYWSAIoct无SOCKET_ADDRESS_LIST2+返回套接字绑定的一系列接口的列表Chapter 9 Page 32SIO_ADDRESS_LIST_CHANGEWSAIoct无无2+本地接口发生变化时,发出通知Chapter 9 Page 32IO_GET_INTERFACE_LISTWSAIoct无INTERFCE_INFO[]2+返回本地接口列表Chapter 9 Page 33安全套接字层的I/O控制命令 (Windows 95/98、Windows NT以及Windows 2000 均不支持)SO_SSL_GET_CAPABILITIESWSAIoct无DWORD1返回Winsock安全提供者的功能,仅定义了SO_CAP_CLIENT标志 Chapter 9 Page 33SO_SSL_GET_FLAGSWSAIoct无DWORD1返回与套接字对应的s信道特有标志Chapter 9 Page 34SO_SSL_SET_FLAGSWSAIoctDWORD无1设置套接字s信道特有标志Chapter 9 Page 34SO_SSL_GET_PROTOCOLSWSAIoct无SSLPROTOCOLS1返回安全提供者支持的协议列表Chapter 9 Page 34SO_SSL_SET_PROTOCOLSWSAIoctSSLPROTOCOLS无1设置基层提供者应当支持的一个协议列表Chapter 9 Page 34SO_SSL_SET_VALIDATE_CERT_HOOKWSAIoctSSLVALIDATECERTHOOK无1为SSL身份凭据的接受设置校验函数Chapter 9 Page 34SO_SSL_PERFORM_HANDSHAKEWSAIoct无无1在已建立连接的套接字上开始安全联络操作Chapter 9 Page 35ATM I/O控制命令SIO_GET_NUMBER_OF_ATM_DEVICESWSAIoct无DWORD2+返回ATM适配器的数量Chapter 9 Page 35SIO_GET_ATM_ADDRESSWSAIoctDWORDATM_ADDRESS2+为指定设备返回ATM地址Chapter 9 Page 35SIO_ASSOCIATE_PVCWSAIoctATM_PVC_PARAMS无2+将套接字与一个永久虚拟回路关联起来Chapter 9 Page 35SIO_GET_ATM_CONNECTION_ID两者均可无ATM_CONNECTION_ID2+获取同套接字关联在一起的ATM连接ID Chapter 9 Page 36
本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u2/75914/showart_2059655.html |
|