Fehler beim Starten von Winsock



  • Ich habe versucht in einem einfachem Programm Winsock zu initialisieren:

    #include <windows.h>
    #include <winsock2.h>
    
    #include <iostream>
    
    using namespace std;
    
    int startWinsock();
    
    int main()
    {
    	if(startWinsock() == 0)
    		cout << "WinSock gestartet!" << endl;
    	else
    		cout << "Fehler beim Starten von WinSock!";
    
    	return 0;
    }
    
    int startWinsock()
    {
    	WSADATA wsa;
    	return WSAStartup(MAKEWORD(2,0),&wsa);
    }
    

    Wenn ich versuche diesen Code zu kompilieren wirft er mir Fehlermeldungen aus die alle behaupten ich würde in winsock2.h so allerlei redefinieren. Ich benutze als IDE MVC++ 6. Ich weiß nicht ob es vielleicht damit zusammenhängt, dass ich vergessen hab irgendetwas einzustellen.

    edit: Da zermartere ich mir den Kopf woran liegen könnte und kommen nicht auf das naheliegende. Offenbar ist Winsock auch in windows.h schon enthalten.

    Order



  • Afaik ist dem normaler Weise aber nicht so 😕 - klappt's denn jetzt?



  • ja, nachdem ich winsock2.h weggelassen habe klappt es.

    edit: hab beim linker noch ws3_32.lib hinzugefügt, vielleicht hat es auch noch etwas damit zu tun



  • Diese Lib musst du natürlich auch linken 🙂 - mich wundert aber, dass du anscheinend winsock2.h nicht einbinden musst 😕 - naja, wenn's läuft 😃



  • stimmt hauptsache es läuft 😃 Und hey, hier programmieren doch alle für Windows, und ihr wundert euch noch über seltsame Erscheinungen? 😉



  • Naja ich finde sich für die WinAPI zu entscheiden gar nicht mal so unrational da es leider die meisten benutzen und benutzen werden 😕



  • Nein, "wirtschaftlich" gesehen macht es auch Sinn die WinApi zu lernen und es wird wohl auch noch lange STandard bleiben. Mein letzter Post war mehr einer von der "Ich-hasse-Windows-benutze-es-aber-doch"-Sorte 😉



  • Dummerweise neues Problem. Hab schon über ne Stunde über den paar Zeilen gebrütet und rumgeblättert, hab aber keine Lösung gefunden.

    hostent* host = gethostbyname(Name);
    if(host == NULL)
        throw Connect_Error();
    memcpy(&(addr.sin_addr),host->h_addr_list[0],4);
    

    Ich versuche nur durch den Hostnamen die jeweilige IP herauszubekommen.
    In addr.sin_addr.s_addr befindet sich nach dieser Operation aber nur eine sinnlose Zahl und nicht die gewünschte IP.



  • hostent* host = gethostbyname("www.google.de");
    in_addr inet; 
    inet.S_un.S_addr = *((unsigned long*)host->h_addr_list[0]);
    std::cout << inet_ntoa(inet);
    


  • Danke, Problem gelöst 👍


Anmelden zum Antworten