Fehler bei Server/Client Programmen



  • Hallo, ich habe mal ein bisschen mit den Grundlagen der Socket-Programmierung angefangen.
    Folgendes:
    Der Server mit folgendem Programm erwartet accept() und soll dann beendet werden.

    #include <winsock.h>
    #include <stdio.h>
    
    int main()
    {
        WSADATA wsa;
        WSAStartup(0x0101,&wsa);
        int tcp_socket;
        struct sockaddr_in srv;
        char recvbuffer[1024];
    
        srv.sin_family = AF_INET;
        srv.sin_port = htons(80);
        srv.sin_addr.s_addr=INADDR_ANY;
    
        tcp_socket=socket(AF_INET,SOCK_STREAM,0);    //tcp
    
        bind(tcp_socket,(struct sockaddr *)&srv,sizeof(srv));
    
        listen(tcp_socket,3);
    
        int srvlen=sizeof(srv);
    
        accept(tcp_socket,(struct sockaddr *)&srv,&srvlen);
    
        return 0;
    }
    

    Nachdem ich den Server gestartet habe, starte ich den Client, der nur connect() "machen" soll, daraufhin müsste der Server beendet werden, jedoch bekomme ich als connect() return-Wert ein -1 (Fehler nehm ich mal an).
    Aber warum ?
    Hier der Code für den Client:

    #include <stdio.h>
    #include <winsock.h>
    
    int main()
    {
        WSADATA wsa;
        WSAStartup(0x0101,&wsa);
        int tcp_socket;
        struct sockaddr_in host;
    
        host.sin_family = AF_INET;
        host.sin_port = htons(80);
        host.sin_addr.s_addr=inet_addr("192.168.2.101");
    
        if( (tcp_socket=socket(AF_INET,SOCK_STREAM,0)) < 0 )    //tcp
        {
            printf("Socket error!");
            exit(1);
        }
    
        printf("%d",connect(tcp_socket,(struct sockaddr *)&host,sizeof(host) ) );
    
        closesocket(tcp_socket);
    
        return 0;
    }
    


  • Als erstes mal nach jeder Funktion checken, obs erfolgreich war, damit man
    weiß, wo es wirklich klemmt....



  • ok, ich habs gefunden, mein Vista scheint den port 80 für connect() zu blockieren, habe dann einen port 12345 genommen, dann gings.


Anmelden zum Antworten