Internet 系列服务驻留在特定的已知端口,并使用特定的协议。getprotoent(3SOCKET) 中定义的 servent 结构描述了服务名到端口号映射:
struct servent { char *s_name; /* official service name */ char **s_aliases; /* alias list */ int s_port; /* port number, network byte order */ char *s_proto; /* protocol to use */ };
getservbyname(3SOCKET) 将服务名以及限定协议(可选)映射到 servent 结构。调用
sp = getservbyname("telnet", (char *) 0);
将返回使用任意协议的 telnet 服务器的服务规范。调用
sp = getservbyname("telnet", "tcp");
将返回使用 TCP 协议的 telnet 服务器。还提供了 getservbyport(3SOCKET) 和 getservent(3SOCKET)。getservbyport(3SOCKET) 具有的接口类似于 getservbyname(3SOCKET) 使用的接口。可以指定一个可选协议名来限定查找。