PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : (UNIX, Sockets) gethostbyaddr() Problem



TrollSlayer
29-06-2004, 10:47
Hallo!
Ich versuche mit der gethostbyaddr() Funktion Infos über den Host auf dem das Prog. läuft zu bekommen. Leider liefert gethostbyaddr() NULL und perror gibt "No such file or directory" aus.
Hier ist das Programm (Abschnitt):

static struct hostent *host_info;
int orig_sock, /* Original socket descriptor in server */
new_sock, /* New socket descriptor from connect */
clnt_len; /* Length of client address */
static struct sockaddr_in clnt_adr, serv_adr;

if ((orig_sock = socket (AF_INET, SOCK_STREAM, 0)) < 0)
memset (&serv_adr, 0, sizeof (serv_adr)); /* Clear it out */
serv_adr.sin_family = AF_INET; /* Set address type */
serv_adr.sin_addr.s_addr = htonl (INADDR_ANY); /* Any interface */
serv_adr.sin_port = htons (0); /* Tell system to use any port */

if (bind (orig_sock, (struct sockaddr *) &serv_adr, sizeof (serv_adr)) < 0)
if (listen (orig_sock, 5) < 0)

host_info = gethostbyaddr ((char*)&serv_adr.sin_addr.s_addr,
sizeof (serv_adr.sin_addr),
AF_INET);

Hat jemand eine Idee, was ich hier falsch mache?

mfg TrollSlayer

TrollSlayer
29-06-2004, 14:27
Ich denke ich habe den Fehler gefunden. ;)
Die Anweisung:
serv_adr.sin_addr.s_addr = htonl (INADDR_ANY);
setzt die Adresse auf einen beliebigen Wert. Dadurch schlägt der Aufruf von gethostbyaddr() fehl. Da ich sowieso nur die Infos vom localhost brauche benutze ich gethostent().