SOL_SOCKET通訊端選項
下表描述 SOL_SOCKET 通訊端選項。 如需取得和設定通訊端選項的詳細資訊,請參閱 getsockopt 和 setsockopt 函式參考頁面。
若要列舉通訊協定並探索每個已安裝通訊協定的支援屬性,請使用 WSAEnumProtocols、 WSCEnumProtocols或 WSCEnumProtocols32 函式。
某些通訊端選項需要比這些資料表所能傳達更多的說明;這類選項包含其他頁面的連結。
注意
除了 SO_BROADCAST 以外,所有SOL_SOCKET通訊端選項都同樣適用于 IPv4 和 IPv6 (,因為不會在 IPv6) 中實作廣播。
SOL_SOCKET通訊端選項
選項 | Get | 集合 | Optval 類型 | 描述 |
---|---|---|---|---|
PVD_CONFIG | 是 | 是 | char [] | 不透明資料結構物件,包含服務提供者的組態資訊。 此選項相依于實作。 |
SO_ACCEPTCONN | 是 | DWORD (布林值) | 傳回通訊端是否處於接聽模式。 此選項僅適用于連線導向通訊協定。 | |
SO_BROADCAST | 是 | 是 | DWORD (布林值) | 設定通訊端以傳送廣播資料。 此選項僅適用于支援廣播 (IPX 和 UDP 的通訊協定,例如) 。 |
SO_BSP_STATE | 是 | CSADDR_INFO | 傳回通訊端所使用的本機位址、本機埠、遠端位址、遠端埠、通訊端類型和通訊協定。 如需詳細資訊 ,請參閱SO_BSP_STATE 參考。 | |
SO_CONDITIONAL_ACCEPT | 是 | 是 | DWORD (布林值) | 指出應用程式是否接受或拒絕連入連線,而不是由通訊協定堆疊接受或拒絕。 如需詳細資訊 ,請參閱SO_CONDITIONAL_ACCEPT 參考。 |
SO_CONNDATA | 是 | 是 | char [] | 其他資料,不在一般網路資料流程中,會隨著網路要求一起傳送,以建立連線。 舊版通訊協定會使用此選項,例如 DECNet、OSI TP4 和其他通訊協定。 Windows 中的 TCP/IP 通訊協定不支援此選項。 |
SO_CONNDATALEN | 是 | DWORD | 其他資料的長度,以位元組為單位,而不是在一般網路資料流程中,會隨著網路要求一起傳送,以建立連線。 舊版通訊協定會使用此選項,例如 DECNet、OSI TP4 和其他通訊協定。 Windows 中的 TCP/IP 通訊協定不支援此選項。 | |
SO_CONNECT_TIME | 是 | DWORD | 傳回通訊端已連接的秒數。 此選項只適用于連線導向通訊協定。 | |
SO_CONNOPT | 是 | 是 | char [] | 其他連線選項資料,不在一般網路資料流程中,會與網路要求一起傳送,以建立連線。 舊版通訊協定會使用此選項,例如 DECNet、OSI TP4 和其他通訊協定。 Windows 中的 TCP/IP 通訊協定不支援此選項。 |
SO_CONNOPTLEN | 是 | DWORD | 連線選項資料的長度,以位元組為單位,而不是在一般網路資料流程中,以網路要求傳送以建立連線。 舊版通訊協定會使用此選項,例如 DECNet、OSI TP4 和其他通訊協定。 Windows 中的 TCP/IP 通訊協定不支援此選項。 | |
SO_DISCDATA | 是 | 是 | char [] | 其他資料,不在一般網路資料流程中,會與網路要求一起傳送,以中斷連線連線。 舊版通訊協定會使用此選項,例如 DECNet、OSI TP4 和其他通訊協定。 Windows 中的 TCP/IP 通訊協定不支援此選項。 |
SO_DISCDATALEN | 是 | DWORD | 其他資料的長度,以位元組為單位,而不是在一般網路資料流程中,會與網路要求一起傳送,以中斷連線連線。 舊版通訊協定會使用此選項,例如 DECNet、OSI TP4 和其他通訊協定。 Windows 中的 TCP/IP 通訊協定不支援此選項。 | |
SO_DISCOPT | 是 | 是 | char [] | 其他中斷連線選項資料,不在一般網路資料流程中,會隨著網路要求傳送,以中斷連線連線。 舊版通訊協定會使用此選項,例如 DECNet、OSI TP4 和其他通訊協定。 Windows 中的 TCP/IP 通訊協定不支援此選項。 |
SO_DISCOPTLEN | 是 | DWORD | 其他中斷連線選項資料的長度,以位元組為單位,而不是在一般網路資料流程中,以網路要求傳送來中斷連線。 舊版通訊協定會使用此選項,例如 DECNet、OSI TP4 和其他通訊協定。 Windows 中的 TCP/IP 通訊協定不支援此選項。 | |
SO_DEBUG | 是 | 是 | DWORD (布林值) | 啟用偵錯輸出。 Microsoft 提供者目前不會輸出任何偵錯資訊。 |
SO_DONTLINGER | 是 | 是 | DWORD (布林值) | 指出與通訊端相關聯之l_onoff結構之l_onoff成員的狀態。 如果此成員為非零,通訊端會在 closesocket 函式呼叫之後保持開啟一段時間,以允許傳送佇列資料。 此選項僅適用于可靠且面向連線的通訊協定。 |
SO_DONTROUTE | 是 | 是 | DWORD (布林值) | 指出應該在通訊端系結至的任何介面上傳送傳出資料,而不是在其他介面上路由傳送。 此選項僅適用于訊息導向通訊協定。 Microsoft 提供者會以無訊息方式忽略此選項,並一律諮詢路由表以尋找適當的傳出介面。 |
SO_ERROR | 是 | DWORD | 傳回這個通訊端的最後一個錯誤碼。 這個每個通訊端的錯誤碼不一定會立即設定。 | |
SO_EXCLUSIVEADDRUSE | 是 | 是 | DWORD (布林值) | 防止任何其他通訊端系結至相同的位址和埠。 呼叫 系結 函式之前,必須先設定這個選項。 如需詳細資訊 ,請參閱SO_EXCLUSIVEADDRUSE 參考。 |
SO_GROUP_ID | 是 | 不帶正負號的整數 | 此通訊端選項是保留的,不應使用。 | |
SO_GROUP_PRIORITY | 是 | 是 | int | 此通訊端選項是保留的,不應使用。 |
SO_KEEPALIVE | 是 | 是 | DWORD (布林值) | 啟用通訊端連線的保持運作。 僅適用于支援保持運作 (連線導向通訊協定概念) 的通訊協定。 針對 TCP,預設的保持運作逾時為 2 小時,而保持運作間隔為 1 秒。 預設的保持運作探查數目會根據 Windows 版本而有所不同。 如需詳細資訊,請參閱 SO_KEEPALIVE 參考。 |
SO_LINGER | 是 | 是 | 結構 linger | 指出與通訊端相關聯的 linger 結構狀態。 如果linger結構的l_onoff成員為非零,在closesocket函式呼叫之後,通訊端會保持開啟一段時間,以允許傳送佇列資料。 要保持開啟的時間量,是以秒為單位,指定在l_linger的 linger結構成員中。 此選項僅適用于可靠且面向連線的通訊協定。 |
SO_MAX_MSG_SIZE | 是 | DWORD | 傳回通訊協定所支援之訊息導向通訊端的輸出訊息大小上限。 對資料流程導向通訊端沒有任何意義。 | |
SO_MAXDG | 是 | DWORD | 傳回通訊協定所支援輸出資料包的大小上限,以位元組為單位。 此通訊端選項對資料流程導向通訊端沒有意義。 | |
SO_MAXPATHDG | 是 | DWORD | 傳回通訊協定所支援輸出資料包的大小上限,以位元組為單位,傳回至指定的目的地位址。 此通訊端選項對資料流程導向通訊端沒有意義。 Microsoft 提供者可能會以無訊息方式將此視為SO_MAXDG。 | |
SO_OOBINLINE | 是 | 是 | DWORD (布林值) | 表示應該以一般資料內嵌方式傳回超出界限的資料。 此選項僅適用于支援頻外資料的連線導向通訊協定。 |
SO_OPENTYPE | 是 | 是 | DWORD | 設定之後,會影響建立的後續通訊端是否不會重迭。 此選項的可能值為 SO_SYNCHRONOUS_ALERT 和 SO_SYNCHRONOUS_NONALERT。 不應該使用此選項。 請改用 WSASocket 函式,並將WSA_FLAG_OVERLAPPED位保留在 關閉 dwFlags 參數中。 |
SO_PAUSE_ACCEPT | 是 | 是 | DWORD (布林值) | 使用此選項接聽通訊端。 設定選項時,通訊端會回應 RST 的所有連入連線,而不是接受這些連線。 |
SO_PORT_SCALABILITY | 是 | 是 | DWORD (布林值) | 藉由在本機電腦上為不同本機位址埠組配置萬用字元埠多次,讓埠配置最大化,以啟用通訊端的本機埠延展性。 在兩個選項皆可使用的平臺上,偏好SO_REUSE_UNICASTPORT而非此選項。 如需詳細資訊 ,請參閱SO_PORT_SCALABILITY 參考。 |
SO_PROTOCOL_INFO | 是 | WSAPROTOCOL_INFO | 如果已定義 UNICODE 宏,這個選項會定義至 SO_PROTOCOL_INFOW 通訊端選項。 如果未定義 UNICODE 宏,則此選項會定義至 SO_PROTOCOL_INFOA 通訊端選項。 | |
SO_PROTOCOL_INFOA | 是 | WSAPROTOCOL_INFOA | 傳回指定通訊端 的WSAPROTOCOL_INFOA 結構 | |
SO_PROTOCOL_INFOW | 是 | WSAPROTOCOL_INFOW | 傳回指定通訊端 的WSAPROTOCOL_INFOW 結構 | |
SO_RANDOMIZE_PORT | 是 | 是 | DWORD (布林值) | 此選項應該在未系結的通訊端上設定。 設定SO_RANDOMIZE_PORT並在通訊端上選取暫時埠時,會系結隨機埠號碼。 自動重複使用埠 (使用SO_REUSE_UNICASTPORT) 選取的埠也會隨機化傳回的埠,因此,如果應用程式設定SO_REUSE_UNICASTPORT,然後嘗試設定SO_RANDOMIZE_PORT,則第二個 setsockopt 呼叫會失敗。 |
SO_RCVBUF | 是 | 是 | DWORD | 保留給接收的每個通訊端緩衝區空間總計。 這與SO_MAX_MSG_SIZE無關,而且不一定對應至 TCP 接收視窗的大小。 |
SO_RCVLOWAT | 是 | 是 | DWORD | 來自 BSD UNIX 的通訊端選項,隨附于回溯相容性。 此選項會設定通訊端輸入作業要處理的最小位元組數目。 Windows TCP/IP 提供者不支援此選項。 如果在 Windows Vista 和更新版本上使用這個選項, 則取得ockopt 和 setockopt 函式會失敗並產生 WSAEINVAL。 在舊版 Windows 上,這些函式會因 WSAENOPROTOOPT 而失敗。 |
SO_RCVTIMEO | 是 | 是 | DWORD | 封鎖接收呼叫的逾時,以毫秒為單位。 此選項的預設值為零,表示接收作業不會逾時。如果封鎖接收呼叫逾時,則連線處於不確定狀態,且應該關閉。 如果使用 WSASocket 函式建立通訊端, dwFlags 參數必須設定 WSA_FLAG_OVERLAPPED 屬性,逾時才能正常運作。 否則,逾時永遠不會生效。 |
SO_REUSEADDR | 是 | 是 | DWORD (布林值) | 允許通訊端系結至已在使用的位址和埠。 SO_EXCLUSIVEADDRUSE選項可能會造成此狀況。 |
SO_REUSE_UNICASTPORT | 是 | 是 | DWORD (布林值) | 設定時,允許暫時埠重複使用需要明確系結的 Winsock API 連線函式,例如 ConnectEx。 請注意,具有隱含系結 (的連接函式,例如沒有明確系結) 預設會設定此選項。 使用此選項,而不是在兩者皆可使用的平臺上 SO_PORT_SCALABILITY 。 |
SO_REUSE_MULTICASTPORT | 是 | DWORD | 在通訊端上設定時,此選項表示通訊端永遠不會用來接收單播封包,因此其埠可以與其他多播專用的應用程式共用。 將值設定為 1 可一律在埠上共用多播流量。 將值設定為 0 (預設) 會停用此行為。 | |
SO_SNDBUF | 是 | 是 | DWORD | 保留給傳送的每個通訊端緩衝區空間總計。 這與SO_MAX_MSG_SIZE無關,而且不一定對應到 TCP 傳送視窗的大小。 |
SO_SNDLOWAT | 是 | 是 | DWORD | 來自 BSD UNIX 的通訊端選項,隨附于回溯相容性。 此選項會設定通訊端輸出作業要處理的最小位元組數目。 Windows TCP/IP 提供者不支援此選項。 如果在 Windows Vista 和更新版本上使用這個選項, 則取得ockopt 和 setockopt 函式會失敗並產生 WSAEINVAL。 在舊版 Windows 上,這些函式會因 WSAENOPROTOOPT 而失敗。 |
SO_SNDTIMEO | 是 | 是 | DWORD | 封鎖傳送呼叫的逾時,以毫秒為單位。 此選項的預設值為零,表示傳送作業不會逾時。如果封鎖傳送呼叫逾時,則連線處於不確定狀態,且應該關閉。 如果使用 WSASocket 函式建立通訊端, dwFlags 參數必須設定 WSA_FLAG_OVERLAPPED 屬性,逾時才能正常運作。 否則,逾時永遠不會生效。 |
SO_TYPE | 是 | DWORD | 傳回指定通訊端 (SOCK_STREAM或SOCK_DGRAM的通訊端類型,例如) 。 | |
SO_UPDATE_ACCEPT_CONTEXT | 是 | DWORD (布林值) | 此選項會與 AcceptEx 函式搭配使用。 此選項會更新繼承自接聽通訊端的通訊端屬性。 如果要在接受的通訊端上使用getpeername、getockname、getockopt或setsockopt函式,則應該設定這個選項。 | |
SO_UPDATE_CONNECT_CONTEXT | 是 | DWORD (布林值) | 此選項會與 ConnectEx、 WSAConnectByList和 WSAConnectByName 函式搭配使用。 此選項會在建立連線之後更新通訊端的屬性。 如果要在連接的通訊端上使用getpeername、getockname、getockopt、setockopt或shutdown函式,則應該設定這個選項。 | |
SO_USELOOPBACK | 是 | 是 | DWORD (布林值) | 從這個通訊端傳送資料時,請使用本機回送位址。 只有當所有傳送的資料也會在本機接收時,才應該使用此選項。 Windows TCP/IP 提供者不支援此選項。 如果在 Windows Vista 和更新版本上使用這個選項, 則取得ockopt 和 setockopt 函式會失敗並產生 WSAEINVAL。 在舊版 Windows 上,這些函式會因 WSAENOPROTOOPT 而失敗。 |
SOL_SOCKET選項的 Windows 支援
選項 | Windows 10 | Windows 7 | Windows Server 2008 | Windows Vista | Windows Server 2003 | Windows XP | Windows 2000 | Windows NT4 | Windows 9x/ME |
---|---|---|---|---|---|---|---|---|---|
PVD_CONFIG | |||||||||
SO_ACCEPTCONN | x | x | x | x | x | x | x | x | x |
SO_BROADCAST | x | x | x | x | x | x | x | x | x |
SO_BSP_STATE | x | x | x | x | |||||
SO_CONDITIONAL_ACCEPT | x | x | x | x | x | x | x | ||
SO_CONNDATA | x | x | x | x | x | x | x | x | |
SO_CONNDATALEN | x | x | x | x | x | x | x | x | |
SO_CONNECT_TIME | x | x | x | x | x | x | x | x | x |
SO_CONNOPT | x | x | x | x | x | x | x | x | |
SO_CONNOPTLEN | x | x | x | x | x | x | x | x | |
SO_DISCDATA | x | x | x | x | x | x | x | x | |
SO_DISCDATALEN | x | x | x | x | x | x | x | x | |
SO_DISCOPT | x | x | x | x | x | x | x | x | |
SO_DISCOPTLEN | x | x | x | x | x | x | x | x | |
SO_DEBUG | x | x | x | x | x | x | x | x | x |
SO_DONTLINGER | x | x | x | x | x | x | x | x | x |
SO_DONTROUTE | x | x | x | x | x | x | x | x | x |
SO_ERROR | x | x | x | x | x | x | x | x | x |
SO_EXCLUSIVEADDRUSE | x | x | x | x | x | x | x | x SP4+ | |
SO_GROUP_ID | x | x | x | x | |||||
SO_GROUP_PRIORITY | x | x | x | x | |||||
SO_KEEPALIVE | x | x | x | x | x | x | x | x | x |
SO_LINGER | x | x | x | x | x | x | x | x | x |
SO_MAX_MSG_SIZE | x | x | x | x | x | x | x | x | x |
SO_MAXDG | x | x | x | x | x | x | x | ||
SO_MAXPATHDG | x | x | x | x | x | x | x | ||
SO_OOBINLINE | x | x | x | x | x | x | x | x | x |
SO_OPENTYPE | x | x | x | x | x | x | x | x | x |
SO_PORT_SCALABILITY | x | x | x | ||||||
SO_PROTECT | x | ||||||||
SO_PROTOCOL_INFO | x | x | x | x | x | x | x | x | x |
SO_PROTOCOL_INFOA | x | x | x | x | x | x | x | x | x |
SO_PROTOCOL_INFOW | x | x | x | x | x | x | x | x | x |
SO_RCVBUF | x | x | x | x | x | x | x | x | x |
SO_RCVLOWAT | |||||||||
SO_RCVTIMEO | x | x | x | x | x | x | x | x | x |
SO_RANDOMIZE_PORT | x | x | x | x | |||||
SO_REUSEADDR | x | x | x | x | x | x | x | x | x |
SO_REUSE_UNICASTPORT | x | ||||||||
SO_REUSE_MULTICASTPORT | x | ||||||||
SO_SNDBUF | x | x | x | x | x | x | x | x | x |
SO_SNDLOWAT | |||||||||
SO_SNDTIMEO | x | x | x | x | x | x | x | x | x |
SO_TYPE | x | x | x | x | x | x | x | x | x |
SO_UPDATE_ACCEPT_CONTEXT | x | x | x | x | x | x | x | x | |
SO_UPDATE_CONNECT_CONTEXT | x | x | x | x | x | x | |||
SO_USELOOPBACK |
備註
SOL_SOCKET通訊端選項定義于數個 Winsock 標頭檔中:
- Winsock2.h
- Mswsock.h
- Ws2def.h
在 Microsoft Windows 軟體發展工具組 (SDK) 針對 Windows Vista 和更新版本發行,標頭檔的組織已變更,且SOL_SOCKET層級定義在Wins2def.h 標頭檔中自動包含在 Winsock2.h 標頭檔中的 Ws2def.h標頭檔中。 Winsock2.h和Mswsock.h標頭檔中定義了部分SOL_SOCKET通訊端選項。 其餘的SOL_SOCKET通訊端選項定義在Winsock2.h標頭檔自動包含的Ws2def.h標頭檔中。 不應直接使用 Ws2def.h 。
在 Windows Server 2003 和 Windows XP 發行的平臺軟體發展工具組) (SDK 上, SOL_SOCKET 層級定義于 Winsock2.h 標頭檔中。 SOL_SOCKET通訊端選項定義于Winsock2.h和Mswsock.h標頭檔中。
規格需求
需求 | 值 |
---|---|
標頭 |
|