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) 使用的接口。可以指定一个可选协议名来限定查找。