Your Browser is not longer supported

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

{{viewport.spaceProperty.prod}}

getservent(), getservbyport(), getservbyname(), setservent(), endservent() - Informationen über Services abfragen

&pagelevel(4)&pagelevel

#include <netdb.h>

struct servent *getservent(void);
struct servent *getservbyname(const char *name, const char *proto);
struct servent *getservbyport(int port, const char *proto);
void setservent(int stayopen); 
void endservent(void);

Beschreibung

Die Funktionen getservbyport(), getservbyname() und getservent() liefern Informationen über die verfügbaren Services. Jede dieser Funktionen liefert einen Zeiger auf ein Objekt der nachfolgend beschriebenen Struktur servent.

Die Struktur servent entspricht den Feldern einer Zeile der Service-Datenbasis /etc/inet/services und ist wie folgt deklariert:

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

s_name

Name des Service.

s_aliases

Eine durch null abgeschlossene Liste mit alternativen Namen für den Service.

s_port

Portnummer, die dem Service zugeordnet ist. Portnummern werden in Netz-Byte-Reihenfolge zurückgeliefert.

s_proto

Name des Protokolls, das verwendet werden muss, um den Service anzusprechen.

getservent() liest die nächste Zeile der Datei. Wenn nötig, öffnet getservent() vorher die Datei.

setservent() öffnet die Datei und setzt sie auf den Anfang zurück. Ist das Flag stayopen ungleich null, so wird die Datenbasis nach keinem Aufruf von getservent() geschlossen (weder direkt noch indirekt durch einen der anderen getserv...()-Aufrufe).

endservent() schließt die Datei.

getservbyname() und getservbyport() durchsuchen die Datei sequenziell von Anfang an, bis

  • ein passender Service-Name gefunden ist oder

  • die passende Portnummer gefunden ist oder

  • das Ende der Datei erreicht ist.

Sofern ein Protokollname (nicht NULL) angegeben ist, suchen getservbyname() und getservbyport() nach dem Service, der das passende Protokoll verwendet.

Returnwert

Erreicht die Suche das Ende der Datei, so wird der Null-Zeiger zurückgeliefert.

Hinweis

Die Informationen über Services und deren Portnummern sind in BCAM nicht vorhanden, da diese Bestandteil der OSI-Schicht 7 sind. Da die Zuordnung von Portnummern zu Services statisch ist, ist die Zuordnung  mittels der Datei /etc/inet/services gelöst (wie in UNIX-Systemen üblich), indem die Services dort eingetragen werden.

Alle Informationen befinden sich in einem statischen Bereich. Die Informationen müssen somit kopiert werden, wenn sie gesichert werden sollen.

Datei

/etc/inet/services

Siehe auch

getprotoent()