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中提供特定的錯誤碼。
錯誤碼 | 意義 |
---|---|
網路子系統失敗。 | |
name或namelen參數不是使用者位址空間的有效部分,或namelen參數太小。 | |
當回呼正在進行時,就會叫用函式。 | |
描述項不是通訊端。 | |
通訊端尚未系結至具有 LPWSPBind的位址,或已在 **LPWSPBind** 中指定ADDR_ANY,但尚未發生連線。 |
備註
LPWSPGetSockName 會擷取名稱中指定通訊端描述元的目前 名稱。 它會用於 s 參數所指定的系結和/或連線通訊端。 傳回本機關聯。 當 LPWSPConnect 呼叫未先執行 LPWSPBind 時,此呼叫特別有用;因為此呼叫提供唯一的方法,可以判斷服務提供者所設定的本機關聯。
例如,如果通訊端系結至未指定的位址 (例如,ADDR_ANY) ,表示指定的位址系列內的任何主機位址都應該用於通訊端,除非通訊端已與LPWSPConnect或LPWSPAccept連線,否則 LPWSPGetSockName不一定會傳回主機位址的相關資訊。 除非已連接通訊端,否則 Windows Sockets SPI 用戶端不得假設將指定位址。 這是因為對於多路主機而言,將用於通訊端的位址是未知的,直到通訊端連線為止。
規格需求
最低支援的用戶端 | Windows 2000 Professional [僅限傳統型應用程式] |
最低支援的伺服器 | Windows 2000 Server [僅限桌面應用程式] |
標頭 | ws2spi.h |