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來擷取特定的錯誤碼。

錯誤碼 意義
WSANOTINITIALISED
使用這個函式之前,必須先進行成功的 WSAStartup 呼叫。
WSAENETDOWN
網路子系統失敗。
WSAEFAULT
其中一個 optvaloptlen 參數指向不在使用者位址空間有效部分的記憶體。 如果 optlen 參數所指向的值小於 CSADDR_INFO 結構的大小,也會傳回此錯誤。
WSAEINPROGRESS
封鎖的 Windows Sockets 1.1 呼叫正在進行中,或服務提供者仍在處理回呼函式。
WSAEINVAL
level參數未知或無效。
WSAENOPROTOOPT
指定的通訊協定系列未知或不支援此選項。
WSAENOTSOCK
描述項不是通訊端。

 

備註

使用SO_BSP_STATE通訊端選項呼叫的getsockopt函式會擷取通訊端所使用的本機位址、本機埠、遠端位址、遠端埠、通訊端類型和通訊協定。 SO_BSP_STATE通訊端選項可搭配 IPv6 或 IPv4 通訊端 (AF_INET6AF_INET位址系列) 。

如果getsockopt函式成功,則會在optval參數所指向緩衝區中CSADDR_INFO結構中傳回信息。 optlen所指向的整數應該原本包含這個緩衝區的大小;在傳回時,它會設定為optval參數中所傳回值的長度,以位元組為單位。

傳回CSADDR_INFO結構中的iSocketTypeiProtocol成員會針對s參數中的通訊端描述項填入 。

如果通訊端處於已連線或系結狀態,則傳回之 CSADDR_INFO結構的LocalAddr成員將會設定為代表本機位址和埠的SOCKADDR結構。 如果通訊端處於線上狀態,則傳回之 CSADDR_INFO結構的RemoteAddr成員將會設定為 SOCKADDR 結構,代表遠端位址和埠。

如果通訊端不是處於已連線或系結狀態,則會以lpSockaddr成員中的Null指標傳回傳回CSADDR_INFO結構的LocalAddr成員,並將iSockaddrLength成員設定為零。 如果通訊端不是系結狀態,則傳回之 CSADDR_INFO結構的RemoteAddr成員會以lpSockaddr成員中的Null指標傳回,並將iSockaddrLength成員設定為零。

如果 getsockopt 函式失敗, optvaloptlen 參數會保持不變, 而且 optval 參數不會指向傳回 CSADDR_INFO 結構。

請注意, Ws2def.h 標頭檔會自動包含在 Winsock2.h中,不應該直接使用。

規格需求

需求
最低支援的用戶端
Windows Vista [僅限傳統型應用程式]
最低支援的伺服器
Windows Server 2008 [僅限傳統型應用程式]
標頭
Ws2def.h (包含 Winsock2.h)

另請參閱

getsockopt

CSADDR_INFO

SOCKADDR