取得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 Phone Store 應用程式支援此函式。

Windows 8.1Windows 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

另請參閱

SOCKADDR

Winsock 函式

Winsock 參考

bind

getpeername

socket