getpeername 函数 (winsock.h)

getpeername 函数检索套接字连接到的对等方的地址。

语法

int getpeername(
  [in]      SOCKET   s,
  [out]     sockaddr *name,
  [in, out] int      *namelen
);

参数

[in] s

标识连接的套接字的描述符。

[out] name

接收对等方地址的 SOCKADDR 结构。

[in, out] namelen

指向 name 参数的大小(以字节为单位)的指针。

返回值

如果未发生错误, getpeername 将返回零。 否则,将返回值 SOCKET_ERROR,并且可以通过调用 WSAGetLastError 检索特定的错误代码。

错误代码 含义
WSANOTINITIALIZED
在使用此函数之前,必须成功调用 WSAStartup
WSAENETDOWN
网络子系统发生故障。
WSAEFAULT
namenamelen 参数不在用户地址空间的有效部分,或者 namelen 参数太小。
WSAEINPROGRESS
阻止 Windows 套接字 1.1 调用正在进行,或者服务提供商仍在处理回调函数。
WSAENOTCONN
套接字未连接。
WSAENOTSOCK
:描述符不是套接字。

注解

getpeername 函数检索连接到套接字 对等方的地址,并将地址存储在由 name 参数标识的 SOCKADDR 结构中。 此函数适用于任何地址系列,并且只返回套接字连接到的地址。 getpeername 函数只能在连接的套接字上使用。

对于数据报套接字,将仅返回在上一个 连接 调用中指定的对等方的地址。 getpeername 不会返回由上一个 sendto 调用指定的任何地址。

调用时, namelen 参数包含 名称 缓冲区的大小(以字节为单位)。 返回时, namelen 参数包含返回 的名称 参数的实际大小(以字节为单位)。

Windows Phone 8:Windows Phone 8 及更高版本上的 Windows Phone 应用商店应用支持此函数。

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)
Library Ws2_32.lib
DLL Ws2_32.dll

另请参阅

Winsock 函数

Winsock 参考

bind

connect

getsockname

sendto

socket