getservbyport 函数 (winsock.h)

getservbyport 函数检索与端口和协议对应的服务信息。

语法

servent * getservbyport(
  [in] int        port,
  [in] const char *proto
);

参数

[in] port

服务端口,按网络字节顺序排列。

[in] proto

指向协议名称的可选指针。 如果为 null,则 getservbyport 将返回端口servent 结构的s_port匹配的第一个服务条目。 否则, getservbyport 将同时匹配 端口proto 参数。

返回值

如果未发生错误, getservbyport 将返回指向 servent 结构的指针。 否则,它将返回一个 null 指针,并且可以通过调用 WSAGetLastError 来检索特定的错误号。

错误代码 含义
WSANOTINITIALISED
在使用此函数之前,必须成功调用 WSAStartup
WSAENETDOWN
网络子系统失败。
WSAHOST_NOT_FOUND
找不到权威应答服务。
WSATRY_AGAIN
找不到非授权服务,或服务器故障。
WSANO_RECOVERY
不可恢复的错误,无法访问服务数据库。
WSANO_DATA
有效名称,没有请求类型的数据记录。
WSAEINPROGRESS
阻止 Windows Sockets 1.1 调用正在进行,或者服务提供程序仍在处理回调函数。
WSAEFAULT
proto 参数不是用户地址空间的有效部分。
WSAEINTR
阻止的 Windows 套接字 1.1 调用已通过 WSACancelBlockingCall 取消。

注解

getservbyport 函数返回指向 servent 结构的指针,就像在 getservbyname 函数中一样。

服务结构由 Windows 套接字分配。 应用程序不得尝试修改此结构或释放其任何组件。 此外,每个线程只分配此结构的一个副本,因此应用程序应在发出任何其他 Windows 套接字函数调用之前复制所需的任何信息。

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

另请参阅

WSAAsyncGetServByPort

Winsock 函数

Winsock 参考

getservbyname