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

SOL_SOCKET、IPPROTO_IP、IPPROTO_TCP和NSPROTO_IPX选项级别

2008-12-19 16:03 471 查看
int[/i][/b] PASCAL[/i] [/i]setsockopt[/i][/b] ( __in SOCKET s,[/i][/b]/*[/i][/b]套接字[/i][/b]*/[/i][/b][/i][/b]
__in[/i][/b] [/i]int[/i][/b] [/i]level[/i][/b], [/i][/b]/*[/i][/b]选项级别[/i][/b]*/[/i][/b][/i][/b]
__in[/i][/b] [/i]int[/i][/b] [/i]optname[/i][/b],[/i][/b]/* [/i][/b]选项级别[/i][/b]*/[/i][/b][/i][/b]
__in[/i][/b] [/i]const[/i][/b] [/i]char[/i][/b] * [/i]optval[/i][/b],[/i][/b]/*[/i][/b] 目标选项的值[/i][/b]*/[/i][/b][/i][/b]
__in[/i][/b] [/i]int[/i][/b] [/i]optlen[/i][/b] );[/i]/*[/i] 目标选项的值[/i][/b]*/[/i][/i][/b]
int [/i][/b]PASCAL[/i] [/i]getsockopt[/i][/b]([/i][/b] [/i][/b]__in[/i][/b] SOCKET [/i][/b]s,[/i][/b] /*[/i][/b]套接字[/i][/b]*/[/i][/b][/i][/b]
__in[/i][/b] int level,[/i][/b] [/i][/b]/*[/i][/b]选项级别[/i][/b]*/[/i][/b][/i][/b]
__in[/i][/b] int
optname,[/i][/b] /* [/i][/b]选项级别[/i][/b]*/[/i][/b][/i][/b]
__out[/i][/b] char*
optval,[/i][/b] /*[/i][/b] 返回目标选项的值[/i][/b]*/[/i][/b][/i][/b]
__inout[/i][/b] int[/i][/b] * optlen);[/i][/b] /*[/i] 返回目标选项的值[/i][/b]*/[/i][/i][/b]
[/b]
SOL_SOCKET[/b]选项级别[/b]
选项值类型[/b]
获取/设置[/b]
Socket[/b]版本[/b]
说明[/b]
SO_ACCEPTCONN
布尔值
只能获取
1+
如为TRUE(真) ,表明套接字处于监听模式Chapter 9 [/i]Page 1[/i]
SO_BROADCAST
布尔值
两种均可
1+
如TRUE,表明套接字已配置成对广播消息进行发送Chapter 9 [/i]Page 2~3[/i]
SO_CONNECT_TIME
整数
只能获取
1+
返回套接字建立连接的时间,以秒为单位,如尚未连接,返回0xffffffff (微软专用)
Chapter 9 Page 3
SO_DEBUG
布尔值
两者均可
1+
如果TRUE,就允许调试输出 (W32不支持) Chapter
9 [/i]Page 3[/i]
SO_DONTLINGER
布尔值
两者均可
1+
如果是TRUE,则禁用SO_LINGER Chapter
9 [/i]Page 3[/i]
SO_LINGER
struct linger
两者均可
1+
设置或获取当前的拖延值Chapter
9 [/i]Page 5~6[/i]
SO_DONTROUTE
布尔值
两者均可
1+
如果TRUE,便直接向网络接口发送消息,毋需查询路由表 (微软无效) [/i]Chapter 9 [/i]Page
4[/i]
SO_ERROR
布尔值
只能获得
1+
返回错误状态Chapter
9 [/i]Page 4[/i]
SO_EXCLUSIVEADDRUSE
布尔值
两者均可
2+
如果TRUE,套接字绑定那个本地端口就不能重新被另一个进程使用Chapter 9 [/i]Page 4~5[/i]
SO_KEEPALIVE
布尔值
两者均可
1+
如果TRUE,套接字就会进行配置,在会话过程中发送”保持活动”消息Chapter
9 [/i]Page 5[/i]
SO_MAX_MSG_SIZE
无符号整数
只能获取
2+
对一个面向消息的套接字来说,一条消息的最大长度Chapter
9 [/i]Page 6[/i]
SO_OOBINLINE
布尔值
两者均可
1+
如果是TRUE,带外数据就会在普通数据流中返回 (W32不支持) Chapter
9 [/i]Page 6[/i]
SO_PROTOCOL_INFO
WSAPROTOCOL_INFO
只能获得
2+
套接字绑定的那种协议的特征Chapter
9 [/i]Page 7[/i]
SO_RCVBUF
整数
两者均可
1+
面向接收操作,为每个套接字分别获取或设置缓冲区长度Chapter
9 [/i]Page 7[/i]
SO_REUSEADDR
布尔值
两者均可
1+
如果是TRUE,套接字就可与一个正由其他套接字使用的地址绑定到一起,或与处在T
IME_WAIT状态的地址绑定到一起Chapter 9 [/i]Page
7~8[/i]
SO_SNDBUF
布尔值
两者均可
1+
设置分配给套接字的数据发送缓冲区的大小 Chapter
9 [/i]Page 8[/i]
SO_TYPE
整数
只能获取
1+
返回指定套接字的类型(如SOCK_DGRAM和SOCK_STREAM等等)Chapter
9 [/i]Page 8[/i]
SO_SNDTIMEO
整数
两者均可
1+
获取或设置套接字上的数据发送超时时间(以毫秒为单位)Chapter
9 [/i]Page 8[/i]
SO_RCVTIMEO
整数
两者均可
1+
获取或设置与套接字上数据接收对应的超时时间值(以毫秒为单位)
Chapter 9 [/i]Page
9[/i]
SO_UPDATE_ACCEPT_CONTEXT
SOCKET
两者均可
1+
更新SOCKET状态 Chapter 9 [/i]Page
9[/i]
IPPROTO_IP[/b]选项级别[/b]
选项值类型[/b]
获取/设置[/b]
Socket[/b]版本[/b]
说明[/b]
IP_OPTIONS
char[]
两者均可
1+
设置或获取I P头内的I P选项 Chapter 9 [/i]Page 16~17[/i]
IP_HDRINCL
布尔值
两者均可
2+
如果是TRUE,IP头就会随即将发送的数据一起提交,并从读取的数据中返回,如下表
Chapter 9 [/i]Page
18[/i][/i]
表IP_HDRINCL:[/u][/i] Chapter 9 [/i]Page
18[/i][/i]
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[/u][/i]
IP_TOS
整数
两者均可
1+
IP服务类型Chapter 9 [/i]Page 19[/i]
IP_TTL
整数
两者均可
1+
I
P协议的“存在时间” (TTL)参数Chapter 9 [/i]Page
19[/i]
IP_MULTICAST_IF
无符号长整数
两者均可
1+
获取或设置打算从它上面发出多播数据的本地接口 Chapter
9 [/i]Page 20[/i]
IP_MULTICAST_TTL
整数
两者均可
1+
为套接字获取或设置多播数据包的存在时间Chapter
9 [/i]Page 20[/i]
IP_MULTICAST_LOOP
布尔值
两者均可
1+
如果TRUE,发至多播地址的数据将原封不动地“反射”或“反弹”回套接字的进入缓冲区 Chapter
9 [/i]Page 20[/i]
IP_ADD_MEMBERSHIP
struct ip_mreq
只能设置
1+
在指定的I P组内为套接字赋予成员资格 Chapter 9 [/i]Page 20[/i]
IP_DROP_MEMBERSHIP
struct ip_mre1
只能设置
1+
将套接字从指定的I P组内删去(撤消成员资格)Chapter 9 [/i]Page
20[/i]
IP_DONTFRAGMENT
布尔值
两者均可
1+
如果是TRUE,就不对I P数据报进行分段Chapter
9 [/i]Page 20[/i]
IPPROTO_TCP[/b]选项级别[/b]
选项值类型[/b]
获取/设置[/b]
Socket[/b]版本[/b]
说明[/b]
TCP_NODELAY
布尔值
两者均可
1+
若为TRUE, 就会在套接字上禁用Nagle算法 (只适用于流式套接字) Chapter
9 [/i]Page 21[/i]
NSPROTO_IPX[/b]选项级别[/b]
选项值类型[/b]
获取/设置[/b]
Socket[/b]版本[/b]
说明 (仅适用于Microsoft IPX/SPX)[/b]
IPX_PTYPE
整数
两者均可
1+
获取或设置I P X包的类型Chapter 9 [/i]Page
21[/i]
IPX_FILTERPTYP
整数
两者均可
1+
获取或设置准备过滤的IPX包之类型Chapter 9 [/i]Page
22[/i]
IPX_STOPFILTERPTYPE
整数
只能设置
1+
删除为指定IPX包设置的过滤器Chapter 9 [/i]Page
22[/i]
IPX_DSTYPE
整数
两者均可
1+
获取或设置SPX头中的数据流字段值Chapter 9 [/i]Page
22[/i]
IPX_EXTENDED_ADDRESS
布尔值
两者均可
1+
如果是TRUE,便允许对I P X包进行扩展定址Chapter
9 [/i]Page 22[/i]
IPX_RECVHDR
布尔值
两者均可
1+
如果是T R U E,就随接收调用一起,返回IPX头Chapter
9 [/i]Page 22[/i]
IPX_MAXSIZE
整数
只能获取
1+
返回I P X数据报的最大长度Chapter 9 [/i]Page
22[/i]
IPX_ADDRESS
IPX_ADDRESS_DATA
只能获取
1+
返回具备I P X能力之适配器的有关信息Chapter 9 [/i]Page
22[/i]
IPX_GETNETINFO
IPX_NETNUM_DATA
只能获取
1+
返回与一个指定I P X网络编号有关的信息Chapter 9 [/i]Page
23[/i]
IPX_GETNETINFO_NORIP
IPX_ADDRESS_DATA
两者均可
1+
返回与一个指定I P X网络编号有关的信息Chapter 9 [/i]Page
23[/i]
IPX_SPXGETCONNECTIONSTATUS
IPX_SPXCONNSTATUS_
DATA
只能获取
1+
返回与一个已建立连接的S P X套接字有关的信息 Chapter 9 [/i]Page
23[/i]
IPX_ADDRESS_NOTIFY
IPX_ADDRESS_DATA
只能获取
1+
若I P X适配器的状态发生改变,则发出异步通知 Chapter 9 [/i]Page 24[/i]
IPX_MAX_ADAPTER_NUM
整数
只能获取
1+
返回存在的IPX适配器个数Chapter 9 [/i]Page
24~25[/i]
IPX_RERIPNETNUMBER
IPX_NETNUM_DATA
只能获取
1+
返回一个网络编号的相关信息Chapter
9 [/i]Page 25[/i]
IPX_RECEIVE_BROADCAST
布尔值
只能设置
1+
如果是TRUE,就不接收IPX广播包Chapter
9 [/i]Page 25[/i]
PX_IMMEDIATESPXZCK
布尔值
两者均可
1+
如果是TRUE,就不在SPX连接上延迟发送ACK
Chapter 9 [/i]Page
25~26[/i]
int[/i][/b] [/i]WSAAPI[/i][/b] [/i][/b]WSAIoctl[/i][/b]( __in SOCKET s,
[/i][/b]/*[/i][/b]套接字[/i][/b]*/[/i][/b][/i][/b]
[/i]__in[/i][/b] [/i]DWORD[/i][/b] [/i]dwIoControlCode[/i][/b], [/i][/b]/*[/i][/b]预定义的标志[/i][/b]*/[/i][/b][/i][/b]
[/i]__in_bcount_opt[/i][/b](cbInBuffer)
LPVOID lpvInBuffer, [/i][/b]/*[/i][/b]指向传递进入的值[/i][/b]*/[/i][/b][/i][/b]
[/i]__in[/i][/b] [/i]DWORD[/i][/b] [/i]cbInBuffer[/i][/b], [/i][/b]/*[/i][/b]传入[/i][/b]数据的多少[/i][/b]*/[/i][/b][/i][/b]
[/i]__out_bcount_part_opt[/i][/b](cbOutBuffer,
*lpcbBytesReturned) LPVOID lpvOutBuffer, [/i][/b]/*[/i][/b]返回信息缓冲区[/i][/b]*/[/i][/b][/i][/b]
[/i]__in[/i][/b] [/i]DWORD[/i][/b] [/i]cbOutBuffer[/i][/b], [/i][/b]/*[/i][/b]缓冲区的字节长度[/i][/b]*/[/i][/b][/i][/b]
[/i]__out[/i][/b] [/i]LPDWORD[/i][/b] [/i]lpcbBytesReturned[/i][/b], [/i][/b]/*[/i][/b]实际返回的字节数[/i][/b]*/[/i][/b][/i][/b]
[/i]__in_opt[/i][/b] [/i]LPWSAOVERLAPPED[/i][/b] [/i]lpOverlapped[/i][/b], [/i][/b]/*[/i][/b]重叠[/i][/b]I/O [/i][/b]*/[/i][/b][/i][/b]
[/i]__in_opt[/i][/b] [/i]LPWSAOVERLAPPED_COMPLETION_ROUTINE[/i][/b] [/i]lpCompletionRoutine[/i][/b]); [/i]/*[/i][/b]重叠[/i][/b]I/O[/i][/b]回调函数[/i][/b]*/[/i][/b][/b]
int[/i][/b] [/i]PASCAL FAR[/i][/b] [/i]ioctlsocket[/i][/b]( [/i]__in[/i][/b] [/i]SOCKET[/i][/b] [/i]s[/i][/b], [/i][/b]/*[/i][/b]套接字[/i][/b]*/[/i][/b][/i][/b]
[/i]__in[/i][/b] [/i]long[/i][/b] [/i]cmd[/i][/b], [/i][/b]/*[/i][/b]预定义的标志[/i][/b]*/[/i][/b][/i][/b]
[/i]__inout[/i][/b] [/i]u_long[/i][/b] [/i]FAR[/i][/b] *[/i]argp[/i][/b]); [/i][/b]/*[/i][/b]命令参数[/i][/b]*/[/i][/b]
IO[/b]控制命令[/b]
函数[/b]
输入[/b]
输出[/b]
Socket[/b]版本[/b]
说明[/b]
标准I/O控制命令
FIONBIO
ioctlsocket/WSAIoct
无符号长整数

1+
将套接字置入非锁定模式, 而若设为0值,意味着套接字进入锁定模式
Chapter 9 [/i]Page
26[/i]
FIONREAD
两者均可

无符号长整数
1+
返回在套接字上存在的数据量Chapter
9 [/i]Page 26[/i]
SIOCATMARK
两者均可

布尔值
1+
判断是否已读取了带外数据Chapter
9 [/i]Page 26~27[/i]
其他I/O控制命令
SIO_ENABLE_CIRCULAR-QUEUEING
WSAIoct
布尔值
布尔值
2+
如接收缓冲区队列溢出,则首先丢弃最早收到的消息
Chapter 9 [/i]Page
27[/i]
SIO_FIND_ROUTE
WSAIoct
SOCKADDR
布尔值
2+
验证到指定地址的路由是否存在(W32不支持)
Chapter 9 [/i]Page
27[/i]
SIO_FLUSH
WSAIoct


2+
判断是否已读取OOB数据Chapter 9 [/i]Page
27[/i]
SIO_BROADCAST_ADDRESS
WSAIoct

SOCKADDR
2+
为套接字地址家族返回一个广播地址Chapter
9 [/i]Page 28[/i]
SIO_GET_EXTENSION_FUNCTION_POINTER
WSAIoct
GUID
函数指针
2+
取得基层提供者特有一个函数指针Chapter
9 [/i]Page 28[/i]
SIO_CHK_QOS
WSAIoct
DWORD
DWORD
2+
为指定的套接字设置QOS属性Chapter 9 [/i]Page
28[/i]
SIO_GET_QOS
WSAIoct

QOS
2+
返回与套接字关联在一起的QOS结构Chapter 9 [/i]Page
29[/i]
SIO_SET_QOS
WSAIoct
QOS

2+
为指定套接字设置QOS属性Chapter 9 [/i]Page
29[/i]
SIO_MULTIPOINT_LOOPBACK
WSAIoct
布尔值
布尔值
2+
设置或调查多播数据是否循环返回套接字Chapter
9 [/i]Page 29[/i]
SIO_MULTICAST_SCOPE
WSAIoct
整数
整数
2+
设置或获取多播数据的存在时间值Chapter
9 [/i]Page 29~30[/i]
SIO_KEEPLIVE_VALS
WSAIoct
tcp_keepalive
tcp_keepalive
2+
针对每一个连接,分别设置其TCP"保持活动”周期
Chapter 9 [/i]Page
30[/i]
SIO_RCVALL
WSAIoct
无符号整数

2+
接收网络上的所有数据包Chapter
9 [/i]Page 30[/i]
SIO_RCVALL_MCAST
WSAIoct
无符号整数

2+
接收网络上的所有多播数据包Chapter
9 [/i]Page 30[/i]
SIO_RCVALL_IGMPMCAST
WSAIoct
无符号整数

2+
接收网络上的所有IGMP数据包Chapter 9 [/i]Page
31[/i]
SIO_ROUTING_INTERFACE_QUERY
两者均可
SOCKADDR

2+
可找到用来向远程机器发送数据的那个本地接口的地址
Chapter 9 [/i]Page
31[/i]
SIO_ROUTING_INTERFACE_CHANGE
WSAIoct
SOCKADDR

2+
与一个端点连接的接口发生改变后,发出通知
Chapter 9 [/i]Page
31[/i]
SIO_ADDRESS_LIST_QUERY
WSAIoct

SOCKET_ADDRESS_LIST
2+
返回套接字绑定的一系列接口的列表Chapter
9 [/i]Page 32[/i]
SIO_ADDRESS_LIST_CHANGE
WSAIoct


2+
本地接口发生变化时,发出通知Chapter
9 [/i]Page 32[/i]
IO_GET_INTERFACE_LIST
WSAIoct

INTERFCE_INFO[]
2+
返回本地接口列表Chapter
9 [/i]Page 33[/i]
安全套接字层的I/O控制命令 (Windows
95/98、Windows NT以及Windows
2000 均不支持)

SO_SSL_GET_CAPABILITIES
WSAIoct

DWORD
1
返回Winsock安全提供者的功能,仅定义了SO_CAP_CLIENT标志
Chapter 9 [/i]Page
33[/i]
SO_SSL_GET_FLAGS
WSAIoct

DWORD
1
返回与套接字对应的s信道特有标志Chapter 9 [/i]Page
34[/i]
SO_SSL_SET_FLAGS
WSAIoct
DWORD

1
设置套接字s信道特有标志Chapter 9 [/i]Page
34[/i]
SO_SSL_GET_PROTOCOLS
WSAIoct

SSLPROTOCOLS
1
返回安全提供者支持的协议列表Chapter
9 [/i]Page 34[/i]
SO_SSL_SET_PROTOCOLS
WSAIoct
SSLPROTOCOLS

1
设置基层提供者应当支持的一个协议列表Chapter
9 [/i]Page 34[/i]
SO_SSL_SET_VALIDATE_CERT_HOOK
WSAIoct
SSLVALIDATECERTHOOK

1
为SSL身份凭据的接受设置校验函数Chapter 9 [/i]Page
34[/i]
SO_SSL_PERFORM_HANDSHAKE
WSAIoct


1
在已建立连接的套接字上开始安全联络操作
Chapter 9 [/i]Page
35[/i]
ATM I/O控制命令
SIO_GET_NUMBER_OF_ATM_DEVICES
WSAIoct

DWORD
2+
返回ATM适配器的数量Chapter 9 [/i]Page
35[/i]
SIO_GET_ATM_ADDRESS
WSAIoct
DWORD
ATM_ADDRESS
2+
为指定设备返回ATM地址Chapter 9 [/i]Page
35[/i]
SIO_ASSOCIATE_PVC
WSAIoct
ATM_PVC_PARAMS

2+
将套接字与一个永久虚拟回路关联起来Chapter
9 [/i]Page 35[/i]
SIO_GET_ATM_CONNECTION_ID
两者均可

ATM_CONNECTION_ID
2+
获取同套接字关联在一起的ATM连接ID Chapter 9 [/i]Page 36[/i]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息