SO_BSP_STATE通訊端選項
SO_BSP_STATE通訊端選項會傳回通訊端所使用的本機位址、本機埠、遠端位址、遠端埠、通訊端類型和通訊協定。
若要執行這項作業,請使用下列參數呼叫 getsockopt 函式。
通訊端選項值
代表這個通訊端選項的常數是0x1009。
語法
int getsockopt(
(SOCKET) s, // descriptor identifying a socket
(int) SOL_SOCKET, // level
(int) SO_BSP_STATE, // optname
(char *) optval, // output buffer,
(int) *optlen, // size of output buffer
);
參數
-
s [in]
-
識別通訊端的描述項。
-
層級 [in]
-
定義選項的層級。 使用此作業 SOL_SOCKET 。
-
optname [in]
-
要擷取值的通訊端選項。 使用此作業 SO_BSP_STATE 。
-
optval [out]
-
要傳回所要求選項值的緩衝區指標。 此參數應該指向緩衝區等於或大於 CSADDR_INFO 結構的大小。
-
optlen [in, out]
-
optval緩衝區的大小指標,以位元組為單位。 此大小必須等於或大於 CSADDR_INFO 結構的大小。
傳回值
如果作業順利完成, 則 getsockopt 會傳回零。
如果作業失敗,則會傳回SOCKET_ERROR的值,並呼叫 WSAGetLastError來擷取特定的錯誤碼。
錯誤碼 | 意義 |
---|---|
使用這個函式之前,必須先進行成功的 WSAStartup 呼叫。 |
|
網路子系統失敗。 |
|
其中一個 optval 或 optlen 參數指向不在使用者位址空間有效部分的記憶體。 如果 optlen 參數所指向的值小於 CSADDR_INFO 結構的大小,也會傳回此錯誤。 |
|
封鎖的 Windows Sockets 1.1 呼叫正在進行中,或服務提供者仍在處理回呼函式。 |
|
level參數未知或無效。 |
|
指定的通訊協定系列未知或不支援此選項。 |
|
描述項不是通訊端。 |
備註
使用SO_BSP_STATE通訊端選項呼叫的getsockopt函式會擷取通訊端所使用的本機位址、本機埠、遠端位址、遠端埠、通訊端類型和通訊協定。 SO_BSP_STATE通訊端選項可搭配 IPv6 或 IPv4 通訊端 (AF_INET6和AF_INET位址系列) 。
如果getsockopt函式成功,則會在optval參數所指向緩衝區中CSADDR_INFO結構中傳回信息。 optlen所指向的整數應該原本包含這個緩衝區的大小;在傳回時,它會設定為optval參數中所傳回值的長度,以位元組為單位。
傳回CSADDR_INFO結構中的iSocketType和iProtocol成員會針對s參數中的通訊端描述項填入 。
如果通訊端處於已連線或系結狀態,則傳回之 CSADDR_INFO結構的LocalAddr成員將會設定為代表本機位址和埠的SOCKADDR結構。 如果通訊端處於線上狀態,則傳回之 CSADDR_INFO結構的RemoteAddr成員將會設定為 SOCKADDR 結構,代表遠端位址和埠。
如果通訊端不是處於已連線或系結狀態,則會以lpSockaddr成員中的Null指標傳回傳回CSADDR_INFO結構的LocalAddr成員,並將iSockaddrLength成員設定為零。 如果通訊端不是系結狀態,則傳回之 CSADDR_INFO結構的RemoteAddr成員會以lpSockaddr成員中的Null指標傳回,並將iSockaddrLength成員設定為零。
如果 getsockopt 函式失敗, optval 和 optlen 參數會保持不變, 而且 optval 參數不會指向傳回 CSADDR_INFO 結構。
請注意, Ws2def.h 標頭檔會自動包含在 Winsock2.h中,不應該直接使用。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 |
Windows Vista [僅限傳統型應用程式] |
最低支援的伺服器 |
Windows Server 2008 [僅限傳統型應用程式] |
標頭 |
|
另請參閱