取得ockname 函式 (winsock.h)
getsockname 函式會擷取套接字的本機名稱。
語法
int getsockname(
[in] SOCKET s,
[out] sockaddr *name,
[in, out] int *namelen
);
參數
[in] s
識別套接字的描述項。
[out] name
接收套接字位址 (名稱) 之SOCKADDR 結構的指標。
[in, out] namelen
名稱緩衝區的大小,以位元組為單位。
傳回值
如果沒有發生錯誤, 則 getsockname 會傳回零。 否則,會傳回SOCKET_ERROR的值,而且可以呼叫 WSAGetLastError 來擷取特定的錯誤碼。
錯誤碼 | 意義 |
---|---|
使用此 API 之前,必須先進行成功的 WSAStartup 呼叫。 | |
網路子系統失敗。 | |
name 或 namelen 參數不是使用者位址空間的有效部分,或 namelen 參數太小。 | |
封鎖的 Windows Sockets 1.1 呼叫正在進行中,或者服務提供者仍在處理回呼函式。 | |
描述項不是套接字。 | |
套接字尚未系結至具有 系結的位址,或在 系結 中指定ADDR_ANY,但尚未發生連線。 |
備註
取得ockname 函式會擷取名稱中指定套接字描述元的目前名稱。 它用於 s 參數所指定的系結或連線套接字上。 傳回本機關聯。 當 連線呼叫未 先執行 系結 時,這個呼叫特別有用; getsockname 函式提供判斷系統所設定之本機關聯的唯一方式。
呼叫時, namelen 參數包含 名稱 緩衝區的大小,以位元組為單位。 傳回時, namelen 參數會包含 名稱 參數位節的實際大小。
當套接字系結至未指定的位址時, getsockname 函式不一定會傳回主機位址的相關信息,除非套接字已與 聯機 連線或 接受 (,例如使用 ADDR_ANY) 。 除非套接字已連線,否則 Windows Sockets 應用程式不得假設會指定位址。 除非在多路主機中使用套接字時連接套接字,否則將用於套接字的位址未知。 如果套接字使用無連線通訊協定,在套接字上發生 I/O 之前,位址可能無法使用。
Windows Phone 8:Windows Phone 8 和更新版本 Windows Phone 上的 Windows Phone Store 應用程式支援此函式。
Windows 8.1 和 Windows Server 2012 R2:Windows 8.1、Windows Server 2012 R2 及更新版本上的 Windows 市集應用程式支援此函式。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows 8.1、Windows Vista [傳統型應用程式 |UWP 應用程式] |
最低支援的伺服器 | Windows Server 2003 [傳統型應用程式 |UWP 應用程式] |
目標平台 | Windows |
標頭 | winsock.h (包含 Winsock2.h) |
程式庫 | Ws2_32.lib |
Dll | Ws2_32.dll |