Your Browser is not longer supported

Please use Google Chrome, Mozilla Firefox or Microsoft Edge to view the page correctly
Loading...

{{viewport.spaceProperty.prod}}

Service-Namen in Portnummern umwandeln und umgekehrt

&pagelevel(3)&pagelevel

Von einem Service wird erwartet, dass er sich an einem bestimmten Port befindet und ein einziges Kommunikationsprotokoll verwendet. Diese Sicht ist innerhalb der Internet-Domäne konsistent, gilt aber nicht in anderen Netz-Architekturen. Außerdem kann ein Service an mehreren Ports vorhanden sein. In diesem Fall müssen Bibliotheksfunktionen der höheren Schichten weitergeleitet oder erweitert werden.

Die Funktion getservbyname() wandelt einen Service-Namen in eine Portnummer um. Beim Aufruf von getservbyname() wird der Service-Name und optional der Name eines qualifizierenden Protokolls übergeben.
Die Funktion getservbyport() wandelt eine Portnummer in einen Service-Namen um. Beim Aufruf von getservbyport() wird die Portnummer und optional der Name eines qualifizierenden Protokolls übergeben.

getservbyname() und getservbyport() liefern als Ergebnis einen Zeiger auf ein Objekt vom Datentyp struct servent.

Die Struktur servent ist in <netdb.h> wie folgt deklariert:

struct servent {
     char *s_name;          /* offizieller Name des Service */
     char **s_aliases;      /* Alias-Liste */
     int  s_port;           /* Nummer des Ports, auf dem der Service liegt */
     char *s_proto;         /* verwendetes Protokoll */
};

Bis openNet Server V3.4 mit SOCKETS(BS2000) V2.5 fand die Umsetzung auf der Basis einer in SOCKETS(BS2000) enthaltenen statischen Liste statt.
Ab openNet Server V3.5 mit SOCKETS(BS2000) V2.6 wird eine Services-Datei mit dem Standardnamen SYSDAT.BCAM.ETC.SERVICES angeboten, die von BCAM (siehe Handbuch „BCAM Band 1/2“) verwaltet wird. Diese Datei wird mit der Standardbelegung der Ports 1-1023 ausgeliefert. Wenn Sie über entsprechende Nutzerrechte verfügen, können Sie diese Datei ändern. Sie können dann Standard-Port-Belegungen verändern und Port-Belegungen ergänzen.

 
Beispiel

Der folgende Programmcode liefert die Portnummer des Service telnet, der das TCP-Protokoll verwendet:

struct servent *sp;
...
sp = getservbyname("telnet", "tcp");