インターネットファミリサービスは、特定の既知のポートに常駐し、特定のプロトコルを使用します。サービス名とポート番号のマッピングは、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) によって使用されるインタフェースに似たインタフェースがあります。つまり、オプションのプロトコル名を指定して、ルックアップを修飾できます。