您的位置:首页 > 理论基础 > 计算机网络

SOL_SOCKET、IPPROTO_IP、IPPROTO_TCP和NSPROTO_IPX选项级别

2010-05-07 10:49 375 查看


int




PASCAL








setsockopt




( __inSOCKETs,




/*




套接字




*/












__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 1


SO_BROADCAST

布尔值

两种均可

1+

如TRUE,表明套接字已配置成对广播消息进行发送

Chapter 9


Page 2~3


SO_CONNECT_TIME

整数

只能获取

1+

返回套接字建立连接的时间,以秒为单位,如尚未连接,返回0xffffffff  (微软专用)

Chapter 9
Page 3

SO_DEBUG

布尔值

两者均可

1+

如果TRUE,就允许调试输出 (W32不支持)

Chapter 9


Page 3


SO_DONTLINGER

布尔值

两者均可

1


如果是TRUE,则禁用SO_LINGER

Chapter 9


Page 3


SO_LINGER

struct linger

两者均可

1+

设置或获取当前的拖延值

Chapter 9


Page 5~6


SO_DONTROUTE

布尔值

两者均可

1+

如果TRUE,便直接向网络接口发送消息,毋需查询路由表 (微软无效)

Chapter 9


Page 4


SO_ERROR

布尔值

只能获得

1+

返回错误状态

Chapter 9


Page 4


SO_EXCLUSIVEADDRUSE

布尔值

两者均可

2+

如果TRUE,套接字绑定那个本地端口就不能重新被另一个进程使用

Chapter 9


Page 4~5


SO_KEEPALIVE

布尔值

两者均可

1+

如果TRUE,套接字就会进行配置,在会话过程中发送”保持活动”消息

Chapter 9


Page 5


SO_MAX_MSG_SIZE

无符号整数

只能获取

2+

对一个面向消息的套接字来说,一条消息的最大长度

Chapter 9


Page 6


SO_OOBINLINE

布尔值

两者均可

1+

如果是TRUE,带外数据就会在普通数据流中返回 (W32不支持)

Chapter 9


Page 6


SO_PROTOCOL_INFO

WSAPROTOCOL_INFO

只能获得

2+

套接字绑定的那种协议的特征

Chapter 9


Page 7


SO_RCVBUF

整数

两者均可

1+

面向接收操作,为每个套接字分别获取或设置缓冲区长度

Chapter 9


Page 7


SO_REUSEADDR

布尔值

两者均可

1+

如果是TRUE,套接字就可与一个正由其他套接字使用的地址绑定到一起,或与处在T IME_WAIT状态的地址绑定到一起
Chapter 9

Page 7~8


SO_SNDBUF

布尔值

两者均可

1+

设置分配给套接字的数据发送缓冲区的大小 

Chapter 9


Page 8


SO_TYPE

整数

只能获取

1+

返回指定套接字的类型(如SOCK_DGRAM和SOCK_STREAM等等)

Chapter 9


Page 8


SO_SNDTIMEO

整数

两者均可

1+

获取或设置套接字上的数据发送超时时间(以毫秒为单位)

Chapter 9


Page 8


SO_RCVTIMEO

整数

两者均可

1+

获取或设置与套接字上数据接收对应的超时时间值(以毫秒为单位)


Chapter 9


Page 9


SO_UPDATE_ACCEPT_CONTEXT

SOCKET

两者均可

1+

更新SOCKET状态

Chapter 9


Page 9


 


IPPROTO_IP


选项级别



选项值类型



获取/设置



Socket


版本



说明


IP_OPTIONS

char[]

两者均可

1+

设置或获取I P头内的I P选项 

Chapter 9


Page 16~17


IP_HDRINCL

布尔值

两者均可

2+

如果是TRUE,IP头就会随即将发送的数据一起提交,并从读取的数据中返回,如下表


Chapter 9


Page 18







表IP_HDRINCL:




                                     
                                                                        

Chapter 9


Page 18





4
位版本

(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_HDRINCL



IP_TOS

整数

两者均可

1


IP
服务类型

Chapter 9


Page 19


IP_TTL

整数

两者均可

1


I P
协议的“存在时间” (TTL)参数

Chapter 9


Page 19


IP_MULTICAST_IF

无符号长整数

两者均可

1


获取或设置打算从它上面发出多播数据的本地接口 

Chapter 9


Page 20


IP_MULTICAST_TTL

整数

两者均可

1


为套接字获取或设置多播数据包的存在时间

Chapter 9


Page 20


IP_MULTICAST_LOOP

布尔值

两者均可

1


如果TRUE,发至多播地址的数据将原封不动地“反射”或“反弹”回套接字的进入缓冲区

Chapter 9


Page 20


IP_ADD_MEMBERSHIP

struct ip_mreq

只能设置

1+

在指定的I P组内为套接字赋予成员资格 

Chapter 9


Page 20


IP_DROP_MEMBERSHIP

struct ip_mre1

只能设置

1+

将套接字从指定的I P组内删去(撤消成员资格)

Chapter 9


Page 20


IP_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 21


IPX_FILTERPTYP

整数

两者均可

1+

获取或设置准备过滤的IPX包之类型

Chapter 9


Page 22


IPX_STOPFILTERPTYPE

整数

只能设置

1+

删除为指定IPX包设置的过滤器

Chapter 9


Page 22


IPX_DSTYPE

整数

两者均可

1+

获取或设置SPX头中的数据流字段值

Chapter 9


Page 22


IPX_EXTENDED_ADDRESS

布尔值

两者均可

1+

如果是TRUE,便允许对I P X包进行扩展定址

Chapter 9


Page 22


IPX_RECVHDR

布尔值

两者均可

1


如果是T R U E,就随接收调用一起,返回IPX头

Chapter 9


Page 22


IPX_MAXSIZE

整数

只能获取

1


返回I P X数据报的最大长度

Chapter 9


Page 22


IPX_ADDRESS

IPX_ADDRESS_DATA

只能获取

1+

返回具备I P X能力之适配器的有关信息

Chapter 9


Page 22


IPX_GETNETINFO

IPX_NETNUM_DATA

只能获取

1+

返回与一个指定I P X网络编号有关的信息

Chapter 9


Page 23


IPX_GETNETINFO_NORIP

IPX_ADDRESS_DATA

两者均可

1+

返回与一个指定I P X网络编号有关的信息

Chapter 9


Page 23


IPX_SPXGETCONNECTIONSTATUS

IPX_SPXCONNSTATUS_

DATA

只能获取

1+

返回与一个已建立连接的S P X套接字有关的信息

Chapter 9


Page 23


IPX_ADDRESS_NOTIFY

IPX_ADDRESS_DATA

只能获取

1+

若I P X适配器的状态发生改变,则发出异步通知 

Chapter 9


Page 24


IPX_MAX_ADAPTER_NUM

整数

只能获取

1+

返回存在的IPX适配器个数

Chapter 9


Page 24~25


IPX_RERIPNETNUMBER

IPX_NETNUM_DATA

只能获取

1+

返回一个网络编号的相关信息

Chapter 9


Page 25


IPX_RECEIVE_BROADCAST

布尔值

只能设置

1+

如果是TRUE,就不接收IPX广播包

Chapter 9


Page 25


PX_IMMEDIATESPXZCK

布尔值

两者均可

1+

如果是TRUE,就不在SPX连接上延迟发送ACK

Chapter 9


Page 25~26


 



int









WSAAPI









WSAIoctl




(   __inSOCKETs,




/*




套接字




*/











          
               





__in









DWORD









dwIoControlCode




,




/*




预定义的标志




*/











          
               





__in_bcount_opt




(cbInBuffer) LPVOIDlpvInBuffer,




/*




指向传递进入的值




*/











          
               





__in









DWORD









cbInBuffer




,




/*




传入




数据的多少




*/











          
               





__out_bcount_part_opt




(cbOutBuffer, *lpcbBytesReturned) LPVOIDlpvOutBuffer,




/*




返回信息缓冲区




*/











          
               





__in









DWORD









cbOutBuffer




,




/*




缓冲区的字节长度




*/











          
               





__out









LPDWORD









lpcbBytesReturned




,




/*




实际返回的字节数




*/











          
               





__in_opt









LPWSAOVERLAPPED









lpOverlapped




,




/*




重叠




I/O




*/











          
               





__in_opt









LPWSAOVERLAPPED_COMPLETION_ROUTINE









lpCompletionRoutine




);




/*




重叠




I/O




回调函数




*/





int









PASCALFAR









ioctlsocket




(




__in









SOCKET









s




,




/*




套接字




*/











          
       
             
   





__in









long









cmd




,




/*




预定义的标志




*/











          
                    
   





__inout









u_long









FAR




*




argp




);




/*




命令参数




*/




IO


控制命令



函数



输入



输出



Socket


版本



说明



标准I/O控制命令


FIONBIO

ioctlsocket/WSAIoct

无符号长整数



1+

将套接字置入非锁定模式, 而若设为0值,意味着套接字进入锁定模式


Chapter 9


Page 26


FIONREAD

两者均可



无符号长整数

1+

返回在套接字上存在的数据量

Chapter 9


Page 26


SIOCATMARK

两者均可



布尔值

1+

判断是否已读取了带外数据

Chapter 9


Page 26~27



其他I/O控制命令


SIO_ENABLE_CIRCULAR-QUEUEING

WSAIoct

布尔值

布尔值

2+

如接收缓冲区队列溢出,则首先丢弃最早收到的消息


Chapter 9


Page 27


SIO_FIND_ROUTE

WSAIoct

SOCKADDR

布尔值

2+

验证到指定地址的路由是否存在(W32不支持)


Chapter 9


Page 27


SIO_FLUSH

WSAIoct





2+

判断是否已读取OOB数据

Chapter 9


Page 27


SIO_BROADCAST_ADDRESS

WSAIoct



SOCKADDR

2+

为套接字地址家族返回一个广播地址

Chapter 9


Page 28


SIO_GET_EXTENSION_FUNCTION_POINTER

WSAIoct

GUID

函数指针

2+

取得基层提供者特有一个函数指针

Chapter 9


Page 28


SIO_CHK_QOS

WSAIoct

DWORD

DWORD

2+

为指定的套接字设置QOS属性

Chapter 9


Page 28


SIO_GET_QOS

WSAIoct



QOS

2+

返回与套接字关联在一起的QOS结构

Chapter 9


Page 29


SIO_SET_QOS

WSAIoct

QOS



2+

为指定套接字设置QOS属性

Chapter 9


Page 29


SIO_MULTIPOINT_LOOPBACK

WSAIoct

布尔值

布尔值

2+

设置或调查多播数据是否循环返回套接字

Chapter 9


Page 29


SIO_MULTICAST_SCOPE

WSAIoct

整数

整数

2+

设置或获取多播数据的存在时间值

Chapter 9


Page 29~30


SIO_KEEPLIVE_VALS

WSAIoct

tcp_keepalive

tcp_keepalive

2+

针对每一个连接,分别设置其TCP"保持活动”周期


Chapter 9


Page 30


SIO_RCVALL

WSAIoct

无符号整数



2+

接收网络上的所有数据包

Chapter 9


Page 30


SIO_RCVALL_MCAST

WSAIoct

无符号整数



2+

接收网络上的所有多播数据包

Chapter 9


Page 30


SIO_RCVALL_IGMPMCAST

WSAIoct

无符号整数



2+

接收网络上的所有IGMP数据包

Chapter 9


Page 31


SIO_ROUTING_INTERFACE_QUERY

两者均可

SOCKADDR



2+

可找到用来向远程机器发送数据的那个本地接口的地址


Chapter 9


Page 31


SIO_ROUTING_INTERFACE_CHANGE

WSAIoct

SOCKADDR



2+

与一个端点连接的接口发生改变后,发出通知


Chapter 9


Page 31


SIO_ADDRESS_LIST_QUERY

WSAIoct



SOCKET_ADDRESS_LIST

2+

返回套接字绑定的一系列接口的列表

Chapter 9


Page 32


SIO_ADDRESS_LIST_CHANGE

WSAIoct





2+

本地接口发生变化时,发出通知

Chapter 9


Page 32


IO_GET_INTERFACE_LIST

WSAIoct



INTERFCE_INFO[]

2+

返回本地接口列表

Chapter 9


Page 33



安全套接字层的I/O控制命令 (Windows 95/98、Windows NT以及Windows 2000 均不支持)


SO_SSL_GET_CAPABILITIES

WSAIoct



DWORD

1

返回Winsock安全提供者的功能,仅定义了SO_CAP_CLIENT标志

Chapter 9


Page 33


SO_SSL_GET_FLAGS

WSAIoct



DWORD

1

返回与套接字对应的s信道特有标志

Chapter 9


Page 34


SO_SSL_SET_FLAGS

WSAIoct

DWORD



1

设置套接字s信道特有标志

Chapter 9


Page 34


SO_SSL_GET_PROTOCOLS

WSAIoct



SSLPROTOCOLS

1

返回安全提供者支持的协议列表

Chapter 9


Page 34


SO_SSL_SET_PROTOCOLS

WSAIoct

SSLPROTOCOLS



1

设置基层提供者应当支持的一个协议列表

Chapter 9


Page 34


SO_SSL_SET_VALIDATE_CERT_HOOK

WSAIoct

SSLVALIDATECERTHOOK



1

为SSL身份凭据的接受设置校验函数

Chapter 9


Page 34


SO_SSL_PERFORM_HANDSHAKE

WSAIoct





1

在已建立连接的套接字上开始安全联络操作


Chapter 9


Page 35



ATM I/O


控制命令


SIO_GET_NUMBER_OF_ATM_DEVICES

WSAIoct



DWORD

2+

返回ATM适配器的数量

Chapter 9


Page 35


SIO_GET_ATM_ADDRESS

WSAIoct

DWORD

ATM_ADDRESS

2+

为指定设备返回ATM地址

Chapter 9


Page 35


SIO_ASSOCIATE_PVC

WSAIoct

ATM_PVC_PARAMS



2+

将套接字与一个永久虚拟回路关联起来

Chapter 9


Page 35


SIO_GET_ATM_CONNECTION_ID

两者均可



ATM_CONNECTION_ID

2+

获取同套接字关联在一起的ATM连接ID

Chapter 9


Page 36


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