Probleme mit DEV-C++



  • mein Dev c++ Compiler spuckt mir bei diesem noch recht einfachen Programm:

    #include <iostream>
    #include <WinSock.h>
    
    #pragma comment(lib, "libws2_32.a")
    
    int main()
    {
        SOCKET s;
        sockaddr_in server;
        unsigned long addr;
    
        WSADATA data;
        WSAStartup(MAKEWORD(1, 1), &data);
    
        s = socket(AF_INET, SOCKET_STREAM,0);
        if(s == SOCKET_ERROR) 
             std::cout << "Fehler bei socket()";
    
        addr = inet_addr("127.0.0.1");
        memcpy((char *)server.sin_addr, &addr, sizeof(addr));
        server.sin_family = AF_INET;
        server.sin_port = htons(89);
    
        if(connect(s,(sockaddr *)&server, sizeof(server)) == SOCKET_ERROR)
        std::cout << "Error";
    
        WSACleanup();
    
        std::cin.get();
    
        return 0;
    }
    

    Den Fehler aus, dass SOCKET_STREAM nicht deklariert ist... Ist dass nicht in winsock.h? und er sagt er kann server.sockaddr_in::sin_addr' nicht in `char*' konvertieren...
    Danke für die Hilfe!



  • Falsches Forum.
    Nebenbei: Es ist SOCK_STREAM , ohne ET wie du wunderbar hättest googlen können. 😉

    Und den Link in meiner Signatur einmal ansehen. Den ganzen Code hinzupfeffern war unnötig.



  • memcpy((char *)server.sin_addr, ... // Zeile 22
    

    Ich frag mich, wie du auf die Idee kommst, ein Stackobjekt in einen Zeiger zu konvertieren. Wenn, dann schreib

    reinterpret_cast<void*>(&server.sin_addr)
    

    zumal memcpy einen void -pointer erwartet 😉



  • #pragma comment(lib, "libws2_32.a")
    

    Diese Zeile nimmt Dev-C++ nicht an. Du musst die librarys manuell im Linker hinzufügen. Dazu musst du oben auf Projekt-> Projekt Optionen -> Parameter -> Bibliothek/Objekt hinzuf. gehen und dann in deinem Dev-C++-Ordner unter "lib" "libws2_32.a" auswählen.



  • Sone schrieb:

    reinterpret_cast<void*>(&server.sin_addr)
    

    zumal memcpy einen void -pointer erwartet 😉

    Konvertierungen nach void* sind implizit.


Anmelden zum Antworten