インターネットファミリサービスは、特定の既知のポートに常駐し、特定のプロトコルを使用します。サービス名からポート番号へのマッピングは、getprotoent(3SOCKET) で定義されている servent 構造体で表現されます。
struct servent { char *s_name; /* サービスの正式名称 */ char **s_aliases; /* 別名リスト */ int s_port; /* パート番号、ネットワークバイトオーダー */ char *s_proto; /* 使用するプロトコル */ };
getservbyname(3SOCKET) はサービス名と修飾プロトコル (省略可能) を servent 構造体にマッピングします。次の呼び出しは、
sp = getservbyname("telnet", (char *) 0);任意のプロトコルを使用する Telnet サーバーのサービス仕様を返します。次の呼び出しは、
sp = getservbyname("telnet", "tcp");
TCP プロトコルを使用するTelnet サーバーを返します。getservbyport(3SOCKET) と getservent(3SOCKET) も提供されます。getservbyport(3SOCKET) に は、getservbyname(3SOCKET) で使用されるインタフェースに似たインタフェースがあります。つまり、オプションのプロトコル名を指定して、ルックアップを修飾できます。