Problem mit gethostbyname



  • Hi!
    Wie ja schon der Titel sagt, habe ich Probleme mit der gethostbyname()-Funktion. Ich bin der Meinung es richtig eingesetzt zu haben, allerdings scheint in "phe" kein Rückgabewert gespeichert zu werden. Also scheinbar kommt von gethostbyname() nur NULL zurück, da die if ausgeführt wird.

    Was die Einbindungen angeht, habe ich folgendes drin:

    #include <string>
    #include <iostream>
    #pragma comment(lib, "Ws2_32.lib") 
    #include <winsock2.h>
    

    Der Code lautet wie folgt: (Es ist ein Ausschnitt eines Konstruktors, daher "exit(0)" statt "return 0")

    string world;
    	cin >> world;
    
    	hostent* phe = gethostbyname(world.c_str());
    	if(phe == NULL)
        {
            cout << "Host konnte nicht aufgeloest werden!" << endl;
            exit(0);
        }
    

    Danke schonmal für jede Hilfe.
    LG



  • Mei, is halt n Fehler aufgetreten. Schau halt, welcher...



  • Danke für die wirklich sehr hilfreiche Antwort. -.-

    Ich dachte eig mir könnte vielleicht jemand sagen, was ich genau da testen kann. Weil bei meinen Tests kommt da kein Grund raus, weswegen ich nichtmal www.google.de finde.


  • Administrator

    1. gethostbyname ist eine WinAPI Funktion und hat nichts mit Standard C++ zu tun. Daher bist du im falschen Forum.
      2. Immer die Dokumentation zu einer Funktion lesen:
      http://msdn.microsoft.com/en-us/library/ms738524.aspx
      Dort steht auch, was man tun muss, wenn man NULL zurückbekommt, also wie man an die Fehlermeldung kommt.
    2. exit(0) in einem Konstruktor? Eine ganz schlechte Idee!
      3.1 exit(0) bedeutet, dass das Programm ohne Fehler beendet wurde.
      3.2 Die exit -Funktion ruft keine Destruktoren auf.
      3.3 Exceptions verwenden!
    3. std::cin Eingabe in einem Konstruktor? Erscheint mir sehr fragwürdig.

    Grüssli



  • Dravere schrieb:

    2. Immer die Dokumentation zu einer Funktion lesen:
    http://msdn.microsoft.com/en-us/library/ms738524.aspx
    Dort steht auch, was man tun muss, wenn man NULL zurückbekommt, also wie man an die Fehlermeldung kommt.

    Wobei man vielleicht auch direkt den Anfang beachten sollte:

    Note The gethostbyname function has been deprecated by the introduction of the getaddrinfo function. Developers creating Windows Sockets 2 applications are urged to use the getaddrinfo function instead of gethostbyname.

    getaddrinfo gibt's im Übrigen auch für POSIX/Unix Syteme.


Anmelden zum Antworten