Your Browser is not longer supported

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

{{viewport.spaceProperty.prod}}

getnameinfo() - Namen des Kommunikationspartners abfragen

&pagelevel(4)&pagelevel

#include <sys/socket.h>
#include <netdb.h>

int getnameinfo (struct sockaddr *sa, size_t salen, char *host, size_t hostlen,
                 char *serv, size_t servlen, int flags);

Beschreibung

Die Funktion getnameinfo() gibt den Namen, welcher der beim Aufruf angegebenen IP-Adresse und Portnummer zugeordnet ist, als Text-String zurück. Die Werte werden entweder über den in SOCKETS(BS2000) integrierten DNS-Resolver von einem DNS-Server oder über systemspezifische Tabellen ermittelt.

Der Parameter sa ist ein Zeiger auf eine sockaddr-Struktur, die die IP-Adresse und Portnummer enthält. Das tatsächliche Format der sockaddr-Struktur hängt von der Adressfamilie ab und ist im Abschnitt "Socket-Adressierung" beschrieben. Das exakte Format von * sa wird durch die Domäne bestimmt, in der die Kommunikation stattfindet. salen gibt die Länge dieser Struktur an.

Nach erfolgreicher Ausführung sind host bzw. serv Zeiger auf zwei Bereiche in denen der entsprechende Socket-Hostname bzw. Servicename stehen (mit Null-Byte abgeschlossen). Die Längen der Bereiche sind in hostlen bzw. servlen anzugeben. Diese müssen groß genug sein, um den Socket-Hostnamen bzw. den Servicenamen (einschließlich Null-Byte) zu speichern. Wird für hostlen oder servlen beim Aufruf der Wert Null angegeben, dann wird angezeigt, dass der Socket-Hostname oder der Servicename nicht zurückgeliefert werden soll.

Die maximalen Längen von Socket-Host- und Servicenamen sind in der Include-Datei <netdb.h> definiert:

#define NI_MAXHOST 1025
#define NI_MAXSERV 32

Der Parameter flags ändert die Art der Ausführung von getnameinfo(), bei dem standardmäßig der vollqualifizierte Domänen-Name des Rechners aus dem DNS ermittelt und zurückgeliefert wird. In Abhängigkeit des Wertes von flags sind folgende Fälle zu unterscheiden:

NI_NOFQDN

Es soll nur der Rechnernamen-Anteil des vollen DNS-Namens (Socket-Hostname) zurückgeliefert werden.

NI_NUMERICHOST

Es soll der numerische Hostname nach Adressumwandlung in abdruckbarer Form zurückgeliefert werden. Dasselbe ist der Fall, wenn der Rechnername weder im DNS noch durch lokale Information ermittelt werden kann und NI_NAMEREQD nicht gesetzt ist.

NI_NAMEREQD

Es soll ein Fehler gemeldet werden, falls der Rechnername im DNS nicht ermittelt werden kann.

NI_NUMERICSERV

Anstatt des Servicenamens soll die Portnummer in abdruckbarer Form zurückgeliefert werden.

Returnwert

0:

Bei Erfolg.

<> 0:

Bei Fehler.

Fehler

EAFNOSUPPORT

Die Funktion wird an diesem System nicht unterstützt. Vergleichen Sie dazu auch den Abschnitt "Abhängigkeiten vom BS2000-Transportsystem BCAM".

EINVAL

Ungültige Adressfamilie im Parameter sa angegeben oder die Längen der Ausgabebereiche host bzw. serv sind zu klein.