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.


Anmelden zum Antworten