SOL_SOCKET通訊端選項

下表描述 SOL_SOCKET 通訊端選項。 如需取得和設定通訊端選項的詳細資訊,請參閱 getsockoptsetsockopt 函式參考頁面。

若要列舉通訊協定並探索每個已安裝通訊協定的支援屬性,請使用 WSAEnumProtocolsWSCEnumProtocolsWSCEnumProtocols32 函式。

某些通訊端選項需要比這些資料表所能傳達更多的說明;這類選項包含其他頁面的連結。

注意

除了 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 和更新版本上使用這個選項, 則取得ockoptsetockopt 函式會失敗並產生 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 和更新版本上使用這個選項, 則取得ockoptsetockopt 函式會失敗並產生 WSAEINVAL。 在舊版 Windows 上,這些函式會因 WSAENOPROTOOPT 而失敗。
SO_SNDTIMEO DWORD 封鎖傳送呼叫的逾時,以毫秒為單位。 此選項的預設值為零,表示傳送作業不會逾時。如果封鎖傳送呼叫逾時,則連線處於不確定狀態,且應該關閉。
如果使用 WSASocket 函式建立通訊端, dwFlags 參數必須設定 WSA_FLAG_OVERLAPPED 屬性,逾時才能正常運作。 否則,逾時永遠不會生效。
SO_TYPE DWORD 傳回指定通訊端 (SOCK_STREAM或SOCK_DGRAM的通訊端類型,例如) 。
SO_UPDATE_ACCEPT_CONTEXT DWORD (布林值) 此選項會與 AcceptEx 函式搭配使用。 此選項會更新繼承自接聽通訊端的通訊端屬性。 如果要在接受的通訊端上使用getpeernamegetockname、getockoptsetsockopt函式,則應該設定這個選項。
SO_UPDATE_CONNECT_CONTEXT DWORD (布林值) 此選項會與 ConnectExWSAConnectByListWSAConnectByName 函式搭配使用。 此選項會在建立連線之後更新通訊端的屬性。 如果要在連接的通訊端上使用getpeernamegetockname、getockopt、setockoptshutdown函式,則應該設定這個選項。
SO_USELOOPBACK DWORD (布林值) 從這個通訊端傳送資料時,請使用本機回送位址。 只有當所有傳送的資料也會在本機接收時,才應該使用此選項。 Windows TCP/IP 提供者不支援此選項。 如果在 Windows Vista 和更新版本上使用這個選項, 則取得ockoptsetockopt 函式會失敗並產生 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.hMswsock.h標頭檔中定義了部分SOL_SOCKET通訊端選項。 其餘的SOL_SOCKET通訊端選項定義在Winsock2.h標頭檔自動包含的Ws2def.h標頭檔中。 不應直接使用 Ws2def.h

在 Windows Server 2003 和 Windows XP 發行的平臺軟體發展工具組) (SDK 上, SOL_SOCKET 層級定義于 Winsock2.h 標頭檔中。 SOL_SOCKET通訊端選項定義于Winsock2.hMswsock.h標頭檔中。

規格需求

需求
標頭
Winsock2.h;
Mswsock.h;
Ws2def.h (包含 Winsock2.h)