LPWSPGETSOCKNAME 回呼函式 (ws2spi.h)

LPWSPGetSockName函式會取得通訊端的本機名稱。

語法

LPWSPGETSOCKNAME Lpwspgetsockname;

int Lpwspgetsockname(
  [in]      SOCKET s,
  [out]     sockaddr *name,
  [in, out] LPINT namelen,
  [out]     LPINT lpErrno
)
{...}

參數

[in] s

識別系結通訊端的描述項。

[out] name

用來提供通訊端位址 (名稱) 之 sockaddr 結構的指標。

[in, out] namelen

在輸入時,以位元組為單位的整數指標,表示依 名稱所指向的結構大小。 在輸出中,會以位元組為單位,指出傳回的名稱大小。

[out] lpErrno

錯誤碼的指標。

傳回值

如果沒有發生錯誤, LPWSPGetSockName 會傳回零。 否則會傳回SOCKET_ERROR的值,並在 lpErrno中提供特定的錯誤碼。

錯誤碼 意義
WSAENETDOWN
網路子系統失敗。
WSAEFAULT
namenamelen參數不是使用者位址空間的有效部分,或namelen參數太小。
WSAEINPROGRESS
當回呼正在進行時,就會叫用函式。
WSAENOTSOCK
描述項不是通訊端。
WSAEINVAL
通訊端尚未系結至具有 LPWSPBind的位址,或已在 **LPWSPBind** 中指定ADDR_ANY,但尚未發生連線。

備註

LPWSPGetSockName 會擷取名稱中指定通訊端描述元的目前 名稱。 它會用於 s 參數所指定的系結和/或連線通訊端。 傳回本機關聯。 當 LPWSPConnect 呼叫未先執行 LPWSPBind 時,此呼叫特別有用;因為此呼叫提供唯一的方法,可以判斷服務提供者所設定的本機關聯。

例如,如果通訊端系結至未指定的位址 (例如,ADDR_ANY) ,表示指定的位址系列內的任何主機位址都應該用於通訊端,除非通訊端已與LPWSPConnectLPWSPAccept連線,否則 LPWSPGetSockName一定會傳回主機位址的相關資訊。 除非已連接通訊端,否則 Windows Sockets SPI 用戶端不得假設將指定位址。 這是因為對於多路主機而言,將用於通訊端的位址是未知的,直到通訊端連線為止。

規格需求

   
最低支援的用戶端 Windows 2000 Professional [僅限傳統型應用程式]
最低支援的伺服器 Windows 2000 Server [僅限桌面應用程式]
標頭 ws2spi.h

另請參閱

LPWSPBind

LPWSPGetPeerName

LPWSPSocket