#include <netdb.h> struct servent *getservbyname(const char *name, const char *proto);
Mit getservbyname() lassen sich Dienst-Namen wie etwa "ftp" in Portnummern auflösen. Dazu wird der Name und optional das Protokoll vorgegeben und eine Struktur servent zurückgegeben.
struct servent { char *s_name; /* official service name */ char **s_aliases; /* alias list */ int s_port; /* port number */ char *s_proto; /* protocol to use */ };
Die Elemente haben dabei folgende Bedeutung:
s_name | Der offizielle Name des Dienstes. Dieser kann von dem Namen abweichen, nach dem gefragt wurde. |
---|---|
s_aliases | Eine Liste weiterer Namen des Dienstes, terminiert durch einen Nullzeiger. |
h_port | Portnummer des Dienstes in Network Byte Order. |
s_proto | Name des Protokolls, mit dem der Dienst erreicht werden kann. |
Unter UNIX wird für gewöhnlich die Datenbank aus /etc/services zu Rate gezogen.
name | Name des gesuchten Dienstes |
---|---|
proto | Name des gewünschten Protokolls. Wird hier NULL angegeben, dann wird der erste passende Eintrag zurückgeliefert. |
Zeiger auf eine Struktur servent, im Fehlerfall NULL. Zurückgegeben wird ein Zeiger auf statischen Speicher, der für weitere Umwandlungen benutzt wird. Daher muss der Aufrufer eine Kopie anlegen, wenn die Daten auch nach weiteren Aufrufe von getservbyname() zur Verfügung stehen sollen.