getHostByName rückgabe konvertieren
-
Hallo ich habe ein problem mit der konvertierung des rückgabewerts von gethostbynamne()
Hier ist mein code , dieser lief so unter Windows. Jetzt will ich die app auf linux exportieren und GNU GCC meckert in der zeile und ich weiss nicht wieso...
struct hostent *hp; unsigned int host_ip; hp = gethostbyname(host); if (hp == 0){ return 0; } else{ host_ip = *(u_int *)hp->h_addr; }
Bin für alle Tipps dankbar und hoffe das problem ist vlt bekannt.
-
und was meckert der gcc an?
-
error: dereferencing pointer to incomplete type|
in der zeile
host_ip = *(u_int *)hp->h_addr;
-
Hast du netdb.h inkludiert? Was soll u_int bitte sein? Warum konvertierst du das Ergebnis nicht in Hostbyteorder? Warum schaust du nur h_addr an? (ein #define auf den ersten Eintrag in h_addr_list) und warum nutzt du überhaupt noch gethostbyname? Die Funktion wurde doch mittlerweile als veraltet markiert und man soll doch lieber getaddrinfo benutzen.
-
Ja und vor allem: warum gibts Du in der shell nicht mal "man gethostbyname" ein?
-
Probiere mal
#include <sys/types.h>
VOR allen anderen includes.
Ich schätze mal, dass je nach Umfang des Programms dies nicht die einzige Anpassung ist, die du machen musst. Einfach mal eben einen Windows-Quellcode auf Unix zu kopieren und dann läuft alles, ist schon ziemlich blauäugig.