Client socket problem



  • Hey
    hab diese code zeilen einmal mit codeblocks compiliert und irgendwie krieg ich immer eine ältere Version der Programms. Hier mal der Code:

    /*Client Socket */
    
    #include <iostream>
    #include <stdio.h>
    #include <winsock2.h>
    #include <windows.h>
    
    int
     startWinsock(void);
    
    int main()
    {
        long rc;
        rc=startWinsock();
        SOCKET s; // SOCKET wird erstellt
        sockaddr_in addr;
    
        if(rc!=0)
        {
            printf("Fehler: start Winsock, fehler code: %i\n",rc);
        }
    
        else
        {
            printf("Winsock gestartet...\n");
        }
    
        s=socket(AF_INET,SOCK_STREAM,0);
    
        if(s==INVALID_SOCKET)
        {
            printf("Fehler: Der Socket konnte nicht erstellt werden. Fehler Code: %d\n",WSAGetLastError());
        }
        else
        {
            printf("Socket wurde erstellt\n");
        }
    
        memset(&addr,0,sizeof(sockaddr_in));
        addr.sin_family=AF_INET;
        addr.sin_port=htons(1234);
        addr.sin_addr.s_addr=inet_addr("127.0.0.1");
    
        rc=connect(s,(sockaddr*)&addr,sizeof(sockaddr)); //connecten
    
        if(rc==SOCKET_ERROR)
        {
            printf("Fehler: connect gescheitert, fehler code: %i\n",WSAGetLastError);
        }
    
        else
        {
            printf("Verbunden mit 127.0.0.1 ...\n");
        }
    
        return 0;
    }
    
    int startWinsock(){
        WSADATA wsa;
        return WSAStartup(MAKEWORD(2,0),&wsa);
        }
    

    und der Compiler:

    Sourcecodes\Sockets\socket\main.cpp||In function `int main()':|
    Sourcecodes\Sockets\socket\main.cpp|22|warning: int format, long int arg (arg 2)|
    Sourcecodes\Sockets\socket\main.cpp|50|warning: int format, pointer arg (arg 2)|
    ||=== Build finished: 0 errors, 2 warnings ===|

    Mein Probis nun das ich keine connection zu meinem Server programm bekomm: 😕 😕

    /*Server Socket */
    
    #include <iostream>
    #include <stdio.h>
    #include <winsock2.h>
    #include <windows.h>
    #include <conio.h>
    
    int startWinsock(void);
    
    int main(){
    
        long rc;
        SOCKET acceptSocket;
        SOCKET connectedSocket;
        sockaddr_in addr;
    
        rc=startWinsock();
    
        if (rc!=0)
        {
            printf("Fehler: startWinsock, fehler code: %d\n",rc);
        }
    
        else
        {
            printf("Winsock gestartet\n");
        }
    
        acceptSocket=socket(AF_INET,SOCK_STREAM,0);
    
        if(acceptSocket==INVALID_SOCKET)
        {
            printf("Fehler: Der Socket konnte nicht erstellt werden,fehler code %d\n",WSAGetLastError());
            return 1;
        }
    
        else
        {
            printf("Socket erstellen!\n");
        }
    
        memset(&addr,0,sizeof(sockaddr_in));
        addr.sin_family=AF_INET;
        addr.sin_port=htons(12345);
        addr.sin_addr.s_addr=ADDR_ANY;
    
        rc=bind(acceptSocket,(sockaddr*)&addr,sizeof(sockaddr_in));
        if(rc!=0)
        {
            printf("Fehler:bind,fehler code: %d",WSAGetLastError());
            return 1;
        }
    
        else
        {
            printf("Socket konnte erstellt werden\a\n");
        }
    
        rc=listen(acceptSocket,10);
    
        if (rc== SOCKET_ERROR)
        {
            printf("Fehler: listen,fehler code %d\n",WSAGetLastError);
        return 1;
        }
    
        else
        {
            printf("acceptSocket ist im listen Modus...\n");
        }
    
        connectedSocket=accept(acceptSocket,NULL,NULL);
    
        if (connectedSocket==INVALID_SOCKET)
        {
            printf("Fehler:accept,fehler code %d",WSAGetLastError);
            return 1;
        }
    
        else
        {
            printf("Neue Verbindung wurde akzeptiert...");
        }
    
        return 0;
    }
    
    int startWinsock(void)
    {
        WSADATA wsa;
    
        return WSAStartup(MAKEWORD(2,0),&wsa);
    }
    

    Warum kriegt mein client keine connection zum server programm??? Die Lösung liegt glaub ich in der Fehlermeldung des compilers... nur hab ich keinen Plan was die zu bedeuten haben...😕 😕 😕

    Freu mich scho auf eure Antworten... 😃 😃

    lg pisco



  • Hallo,

    das sind "nur" Warnungen, die machst du erst mal weg:

    rc ist doch ein long:

    da kannst du doch nicht einfach "%i" (Integer!) als Format angeben:

    printf("Fehler: start Winsock, fehler code: %i\n",rc);
    

    beim anderen auch eine Nachlässigkeit, du übergibst einen Funktionszeiger (WSAGetLastError) an printf :

    printf("Fehler: connect gescheitert, fehler code: %i\n",WSAGetLastError)
    

    setze die runden Klammern dahinter, und es ist ok, weil hier WSAGetLastError einen int zurückgibt.

    MfG,

    Probe-Nutzer



  • Dieser Thread wurde von Moderator/in rüdiger aus dem Forum ANSI C in das Forum WinAPI verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.


Anmelden zum Antworten