SERVER CLIENT



  • Hallo Leute,
    bin neu hier im Forum und weiß nicht genau ob ich hier im richtigen Bereich poste.
    Wenn nicht schon mal entschuldigung.
    Hab gerade angefangen mich mit Socketprog. auseinander zu setzen und bin auch prompt auf die ersten Probleme gestoßen.
    Habe einen Client der erstmal nichts anderes machen soll als Verbindung zum Server aufzubauen. Dies klappt auch gut solange ich z.B zum Server von google Verbindung aufbaue. Probiere ich das ganze beim meinem Server geht der Verbindungsaufbau in die Hose.
    Ich benutze C++ unter Codeblocks Ubuntu Linux.
    Hoffe es kann mir jemand weiterhelfen.
    Gruss

    Client

    #include <iostream>
    #include <sys/socket.h>
    #include <arpa/inet.h>
    #include <string>
    
    using namespace std;
    
    int main()
    {   // Socket öffenen
        int Socket = socket(AF_INET,SOCK_STREAM,0); //(int family,int type,int Protokoll)(IPv4,TCP,0);
        if (Socket == -1){
            cout << "Socket konnte nicht erstellt werden" << endl;
            return 1;
        }
    
       struct sockaddr_in Verbindung;
       // Parameter festlegen;
       Verbindung.sin_addr.s_addr = inet_addr("127.0.0.1");
       Verbindung.sin_family=AF_INET;
       Verbindung.sin_port=htons(2000);
       int VOK = connect(Socket,(struct sockaddr *)&Verbindung,sizeof(Verbindung));
         if(VOK == -1){
             cout << "Verbindung fehlgeschlagen" << endl;
             return 1;
         }
         cout << "Verbindung aufgebaut" << endl;
    
        return 0;
    }
    

    Server

    #include <iostream>
    #include <sys/types.h>
    #include <sys/socket.h>
    #include <netinet/in.h>
    
    using namespace std;
    
    int main()
    {   // Socket öffnen;
        int Socket = socket(AF_INET,SOCK_STREAM,0);//(IPv4,TCP,0);
          if (Socket == -1){
            cout << "Socket konnte nicht geöffnet werden" << endl;
            return 1;
            }
    
    struct sockaddr_in Verbindung;
    //Parameter festlegen
    Verbindung.sin_family = AF_INET;
    Verbindung.sin_port = (2000);
    Verbindung.sin_addr.s_addr = INADDR_ANY;
    
    int VOK = bind(Socket,(struct sockaddr *)&Verbindung,sizeof (Verbindung));
      if (VOK != 0){
          cout << "Verbindung fehlgeschlagen"<< endl;
          return 1;
      }
    
        cout <<"Server bereit" << endl;
    
        listen (Socket,3);
        accept(Socket,NULL,NULL);
        cout << "Verbindung zum Client hergestellt" << endl;
    
        return 0;
    }
    


  • ich bin der Sprache C++ nicht so mächtig aber vllt hast du vergessen den Port auch im Router freizugeben?



  • Muss beim Server ebenfalls htons(2000) heißen.
    Am Router kann's nicht liegen, der wird nicht gefragt, wenn man mit localhost kommuniziert.



  • Vielen dank..
    htons() hat gefehlt hab ich übersehen. 😉 Jetzt funktioniert es.

    Nochmal danke für die schnelle Beantwortung. Echt ein gutes Forum.
    Gruss



  • sry hab die 127.0.0.1 übersehen


Anmelden zum Antworten