getservbyname 函数 (winsock.h)

getservbyname 函数检索与服务名称和协议对应的服务信息。

语法

servent * getservbyname(
  [in] const char *name,
  [in] const char *proto
);

参数

[in] name

指向 以 null 结尾的服务名称的指针。

[in] proto

指向 以 null 结尾的协议名称的指针。 如果此指针为 NULL则 getservbyname 函数返回第一个服务条目,其中 nameservent 结构的 s_name 成员或 servicent 结构的 s_aliases 成员匹配。 否则, getservbyname 将匹配 名称和proto

返回值

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

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

注解

getservbyname 函数返回指向 servicent 结构的指针,其中包含与 name 参数中的字符串匹配的名称 () 和服务编号。 所有字符串都以 null 结尾。

返回的指针指向 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

另请参阅

WSAAsyncGetServByName

Winsock 函数

Winsock 参考

getservbyport