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

錯誤碼 意義
WSANOTINITIALISED
使用此 API 之前,必須先進行成功的 WSAStartup 呼叫。
WSAENETDOWN
網路子系統失敗。
WSAEFAULT
namenamelen參數不是使用者位址空間的有效部分,或namelen參數太小。
WSAEINPROGRESS
封鎖的 Windows Sockets 1.1 呼叫正在進行中,或者服務提供者仍在處理回呼函式。
WSAENOTSOCK
描述項不是通訊端。
WSAEINVAL
通訊端尚未系結至具有 系結的位址,或在 系結 中指定ADDR_ANY,但尚未發生連線。

備註

取得ockname函式會擷取名稱中指定通訊端描述元的目前名稱。 它用於 s 參數所指定的系結或連線通訊端上。 傳回本機關聯。 當 連線呼叫未 先執行 系結 時,這個呼叫特別有用; getsockname 函式提供判斷系統所設定之本機關聯的唯一方式。

呼叫時, namelen 參數包含 名稱 緩衝區的大小,以位元組為單位。 傳回時, namelen 參數會包含 名稱 參數位元組的實際大小。

當通訊端系結至未指定的位址時, getsockname 函式不一定會傳回主機位址的相關資訊,除非通訊端已與 連線 連線或 接受 (,例如使用 ADDR_ANY) 。 除非通訊端已連線,否則 Windows Sockets 應用程式不得假設會指定位址。 除非在多路主機中使用通訊端時連接通訊端,否則將用於通訊端的位址未知。 如果通訊端使用無連線通訊協定,在通訊端上發生 I/O 之前,位址可能無法使用。

Windows Phone 8:Windows Phone 8 和更新版本Windows Phone市集應用程式支援此函式。

Windows 8.1Windows Server 2012 R2:Windows 市集應用程式支援此功能,Windows 8.1、Windows Server 2012 R2 及更新版本。

規格需求

   
最低支援的用戶端 Windows 8.1、Windows Vista [傳統型應用程式 |UWP 應用程式]
最低支援的伺服器 Windows Server 2003 [傳統型應用程式 |UWP 應用程式]
目標平台 Windows
標頭 winsock.h (包含 Winsock2.h)
程式庫 Ws2_32.lib
Dll Ws2_32.dll

另請參閱

SOCKADDR

Winsock 函式

Winsock 參考

bind

getpeername

socket