SOL_SOCKET、IPPROTO_IP、IPPROTO_TCP和NSPROTO_IPX選項級別

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_DGRAMSOCK_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, IGMPICMP等等)

16 位頭檢驗和

( 校驗和是指對整個I P頭進行1 61的求餘總和結果, 不針對實際的數據)

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/98Windows 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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章