2024年4月27日发(作者:)

SOL_SOCKET、IPPROTO_IP、IPPROTO_TCP和NSPROTO_IPX选项级别

int

setsockopt ( __in SOCKET s,/*套接字*/

__in int level, /*选项级别*/

__in int optname,/* 选项级别*/

__in const char * optval,/*

目标选项的值*/

__in int optlen );/*

目标选项的值*/

int getsockopt( __in SOCKET s, /*套接字*/

__in int level, /*选项级别*/

__in int optname, /* 选项级别*/

__out char* optval, /*

返回目标选项的值*/

__inout int * optlen); /*

返回目标选项的值*/

SOL_SOCKET选项级别

SO_ACCEPTCONN

SO_BROADCAST

SO_CONNECT_TIME

选项值类型

布尔值

布尔值

整数

获取/设置

只能获取

两种均可

只能获取

Socket版本

1+

1+

1+

说明

如为TRUE(真) ,表明套接字处于监听模式

Chapter 9 Page 1

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

Chapter 9 Page 2~3

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

Chapter 9 Page 3

SO_DEBUG

SO_DONTLINGER

SO_LINGER

SO_DONTROUTE

SO_ERROR

SO_EXCLUSIVEADDRUSE

SO_KEEPALIVE

SO_MAX_MSG_SIZE

SO_OOBINLINE

SO_PROTOCOL_INFO

SO_RCVBUF

SO_REUSEADDR

布尔值

布尔值

struct linger

布尔值

布尔值

布尔值

布尔值

无符号整数

布尔值

两者均可

两者均可

两者均可

两者均可

只能获得

两者均可

两者均可

只能获取

两者均可

1+

1+

1+

1+

1+

2+

1+

2+

1+

2+

1+

1+

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

Chapter 9 Page 3

如果是TRUE,则禁用SO_LINGER

Chapter 9 Page 3

设置或获取当前的拖延值

Chapter 9 Page 5~6

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

Chapter 9 Page 4

返回错误状态

Chapter 9 Page 4

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

Chapter 9 Page 4~5

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

Chapter 9 Page 5

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

Chapter 9 Page 6

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

Chapter 9 Page 6

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

Chapter 9 Page 7

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

Chapter 9 Page 7

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

起C

hapter 9 Page 7~8

WSAPROTOCOL_INFO 只能获得

整数

布尔值

两者均可

两者均可

SO_SNDBUF

SO_TYPE

SO_SNDTIMEO

SO_RCVTIMEO

布尔值

整数

整数

整数

两者均可

只能获取

两者均可

两者均可

1+

1+

1+

1+

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

Chapter 9 Page 8

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

Chapter 9 Page 8

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

Chapter 9 Page 8

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

Chapter 9 Page 9

SO_UPDATE_ACCEPT_CONTEXT

IPPROTO_IP选项级别

IP_OPTIONS

IP_HDRINCL

SOCKET 两者均可 1+ 更新SOCKET状态

Chapter 9 Page 9

选项值类型

char[]

布尔值

获取/设置

两者均可

两者均可

Socket版本

1+

2+

说明

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

Chapter 9 Page 16~17

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

Chapter 9 Page 18

表IP_HDRINCL: Chapter 9 Page 18

4位版本

(ipv4 or ipv6)

16位标识

(对发出的每个ip包进行“唯一性”标定, 每发出一个数据包,系统都会递增这个值)

8位存在时间

(参阅IP_TTL)

32位源IP地址

32位目标IP地址

IP选项(如果有的话,详见IP_OPTIONS)

数据

整数

整数

无符号长整数

整数

布尔值

struct ip_mreq

struct ip_mre1

布尔值

两者均可

两者均可

两者均可

两者均可

两者均可

只能设置

只能设置

两者均可

1+

1+

1+

1+

1+

1+

1+

1+

IP服务类型

Chapter 9 Page 19

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

Chapter 9 Page 19

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

Chapter 9 Page 20

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

Chapter 9 Page 20

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

Chapter 9 Page 20

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

Chapter 9 Page 20

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

Chapter 9 Page 20

如果是TRUE,就不对I P数据报进行分段

Chapter 9 Page 20

8位协议类型

(用于对进入的数据包组装,如:TCP, IDP, IGMP和ICMP等等)

4位头长度

(32位字一共有多少个)

8位服务类型

(参阅IP_TOS)

16位总长

(以字节为单位, ip头和数据共长)

3个1位标志 (仅在I P包需要分割为较小

13位分段偏移 (仅在ip包需要分割为较小的包时才会用到)

的包时才会用到)

16位头检验和

(校验和是指对整个I P头进行1 6位1的求余总和结果, 不针对实际的数据)

表IP_HDRINCL

IP_TOS

IP_TTL

IP_MULTICAST_IF

IP_MULTICAST_TTL

IP_MULTICAST_LOOP

IP_ADD_MEMBERSHIP

IP_DROP_MEMBERSHIP

IP_DONTFRAGMENT

IPPROTO_TCP选项级别

TCP_NODELAY

NSPROTO_IPX选项级别

选项值类型

布尔值

获取/设置

两者均可

Socket版本

1+

说明

若为TRUE, 就会在套接字上禁用Nagle算法 (只适用于流式套接字)

Chapter 9 Page 21

选项值类型 获取/设置 Socket版本 说明 (仅适用于Microsoft IPX/SPX)

IPX_PTYPE

IPX_FILTERPTYP

IPX_STOPFILTERPTYPE

IPX_DSTYPE

IPX_EXTENDED_ADDRESS

IPX_RECVHDR

IPX_MAXSIZE

IPX_ADDRESS

IPX_GETNETINFO

IPX_GETNETINFO_NORIP

IPX_SPXGETCONNECTIONSTATUS

整数

整数

整数

整数

布尔值

布尔值

整数

IPX_ADDRESS_DATA

IPX_NETNUM_DATA

IPX_ADDRESS_DATA

IPX_SPXCONNSTATUS_

DATA

两者均可

两者均可

只能设置

两者均可

两者均可

两者均可

只能获取

只能获取

只能获取

两者均可

只能获取

1+

1+

1+

1+

1+

1+

1+

1+

1+

1+

1+

获取或设置I P X包的类型

Chapter 9 Page 21

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

Chapter 9 Page 22

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

Chapter 9 Page 22

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

Chapter 9 Page 22

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

Chapter 9 Page 22

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

Chapter 9 Page 22

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

Chapter 9 Page 22

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

Chapter 9 Page 22

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

Chapter 9 Page 23

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

Chapter 9 Page 23

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

Chapter 9 Page 23

IPX_ADDRESS_NOTIFY

IPX_MAX_ADAPTER_NUM

IPX_RERIPNETNUMBER

IPX_RECEIVE_BROADCAST

PX_IMMEDIATESPXZCK

IPX_ADDRESS_DATA

整数

IPX_NETNUM_DATA

布尔值

布尔值

只能获取

只能获取

只能获取

只能设置

两者均可

1+

1+

1+

1+

1+

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

Chapter 9 Page 24

返回存在的IPX适配器个数

Chapter 9 Page 24~25

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

Chapter 9 Page 25

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

Chapter 9 Page 25

如果是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控制命令

FIONBIO ioctlsocket/WSAIoct 无符号长整数 无 1+ 将套接字置入非锁定模式, 而若设为0值,意味着套接字进入锁定模式

Chapter 9 Page 26

FIONREAD

SIOCATMARK

其他I/O控制命令

SIO_ENABLE_CIRCULAR-QUEUEING WSAIoct 布尔值 布尔值 2+ 如接收缓冲区队列溢出,则首先丢弃最早收到的消息

两者均可

两者均可

无符号长整数

布尔值

1+

1+

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

Chapter 9 Page 26

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

Chapter 9 Page 26~27

Chapter 9 Page 27

SIO_FIND_ROUTE WSAIoct SOCKADDR 布尔值 2+ 验证到指定地址的路由是否存在(W32不支持)

Chapter 9 Page 27

SIO_FLUSH

SIO_BROADCAST_ADDRESS

SIO_GET_EXTENSION_FUNCTION_POINTER

SIO_CHK_QOS

SIO_GET_QOS

SIO_SET_QOS

SIO_MULTIPOINT_LOOPBACK

SIO_MULTICAST_SCOPE

SIO_KEEPLIVE_VALS

WSAIoct

WSAIoct

WSAIoct

WSAIoct

WSAIoct

WSAIoct

WSAIoct

WSAIoct

WSAIoct

GUID

DWORD

QOS

布尔值

整数

tcp_keepalive

SOCKADDR

函数指针

DWORD

QOS

布尔值

整数

tcp_keepalive

2+

2+

2+

2+

2+

2+

2+

2+

2+

判断是否已读取OOB数据

Chapter 9 Page 27

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

Chapter 9 Page 28

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

Chapter 9 Page 28

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

Chapter 9 Page 28

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

Chapter 9 Page 29

为指定套接字设置QOS属性

Chapter 9 Page 29

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

Chapter 9 Page 29

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

Chapter 9 Page 29~30

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

Chapter 9 Page 30

SIO_RCVALL

SIO_RCVALL_MCAST

SIO_RCVALL_IGMPMCAST

SIO_ROUTING_INTERFACE_QUERY

WSAIoct

WSAIoct

WSAIoct

两者均可

无符号整数

无符号整数

无符号整数

SOCKADDR

2+

2+

2+

2+

接收网络上的所有数据包

Chapter 9 Page 30

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

Chapter 9 Page 30

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

Chapter 9 Page 31

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

Chapter 9 Page 31

SIO_ROUTING_INTERFACE_CHANGE WSAIoct SOCKADDR 无 2+ 与一个端点连接的接口发生改变后,发出通知

Chapter 9 Page 31

SIO_ADDRESS_LIST_QUERY

SIO_ADDRESS_LIST_CHANGE

IO_GET_INTERFACE_LIST

WSAIoct

WSAIoct

WSAIoct

SOCKET_ADDRESS_LIST

INTERFCE_INFO[]

2+

2+

2+

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

Chapter 9 Page 32

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

Chapter 9 Page 32

返回本地接口列表

Chapter 9 Page 33

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

SO_SSL_GET_CAPABILITIES

SO_SSL_GET_FLAGS

SO_SSL_SET_FLAGS

SO_SSL_GET_PROTOCOLS

SO_SSL_SET_PROTOCOLS

SO_SSL_SET_VALIDATE_CERT_HOOK

SO_SSL_PERFORM_HANDSHAKE

WSAIoct

WSAIoct

WSAIoct

WSAIoct

WSAIoct

WSAIoct

WSAIoct

DWORD

SSLPROTOCOLS

SSLVALIDATECERTHOOK

DWORD

DWORD

SSLPROTOCOLS

1

1

1

1

1

1

1

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

Chapter 9 Page 33

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

Chapter 9 Page 34

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

Chapter 9 Page 34

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

Chapter 9 Page 34

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

Chapter 9 Page 34

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

Chapter 9 Page 34

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

Chapter 9 Page 35

ATM I/O控制命令

SIO_GET_NUMBER_OF_ATM_DEVICES

SIO_GET_ATM_ADDRESS

SIO_ASSOCIATE_PVC

SIO_GET_ATM_CONNECTION_ID

WSAIoct

WSAIoct

WSAIoct

两者均可

DWORD

ATM_PVC_PARAMS

DWORD

ATM_ADDRESS

ATM_CONNECTION_ID

2+

2+

2+

2+

返回ATM适配器的数量

Chapter 9 Page 35

为指定设备返回ATM地址

Chapter 9 Page 35

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

Chapter 9 Page 35

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

Chapter 9 Page 36