Problem mit Winsocks



  • Wenn ich folgendes Programm aufrufe und dabei über die Kommandozeile als Parameter 127.0.0.1 übergebe

    #include <stdio.h>
    #include <stdlib.h>
    #include <winsock2.h>
    
    int main(int argc, char *argv[])
    {
        SOCKET sock = socket( AF_INET, SOCK_STREAM, 0 );
        if (sock < 0) {
            // Fehler beim Erzeugen des Sockets
        }
        struct sockaddr_in server;
        unsigned long addr;
        // Alternative zu memset() -> bzero()
        memset( &server, 0, sizeof (server));
        addr = inet_addr( argv[1] );
        memcpy( (char *)&server.sin_addr, &addr, sizeof(addr));
        server.sin_family = AF_INET;
        server.sin_port = htons(80);
        // Baue die Verbindung zum Server auf
        if (connect(sock,(struct sockaddr*)&server, sizeof(server)) < 0)
        {
            printf("Error\n");
        }
        if( (send(sock,"test",sizeof("test"),0)) != -1)
        {
            printf("sent successful\n");
        }
    
        system("PAUSE");	
        return 0;
    }
    

    und dabei netcat auf meinem Rechner auf Port 80 lauschen lasse, dann sollte ja eigentlich eine Verbindung zu stande kommen, allerdings gibt das Programm "Error" aus, wodurch ich zu dem Schluss komme, dass keine Verbindung zu stande kommt. (Ja, ich weiss, "Error" ist keine sehr sinnvolle Fehlermeldung, aber das Programm ist erstmal nur ein Test)



  • WSAGetLastError() gibt an den zentralen Stellen wie z.B. innerhalb der if bei connect gute Hinweise auf den Fehler.

    // das
    addr = inet_addr( argv[1] );
    memcpy( (char *)&server.sin_addr, &addr, sizeof(addr)); 
    
    // muesste auch so
    addrIn.sin_addr.s_addr = inet_addr(argv[1]);
    


  • Fehler gefunden, WSAStartup hat in meinem Code komplett gefehlt


Anmelden zum Antworten