Fragen zu Netzwerkprogrammierung



  • benutzt doch einfach die winsockets.
    gutes tutorial: http://www.c-worker.ch



  • Warum soll er die Winsocks benutzen? Gibts dafür einen guten Grund?



  • Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum Rund um die Programmierung verschoben.

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

    Dieses Posting wurde automatisch erzeugt.



  • Artchi schrieb:

    Warum soll er die Winsocks benutzen? Gibts dafür einen guten Grund?

    Nach den Fragen die er hier so gestellt hat, wird er mit Boost/Asio vermutlich noch überfordert sein.
    Da wär Winsock wirklich am einfachsten.



  • Wird asio überhaupt noch weiterentwickelt? Wurde es in Boost aufgenommen?



  • Das Review-Ergebnis ist leider noch nicht veröffentlicht worden. Nichts genaues weiß man. Die Lib wird laut Boost mailingliste schon von Projekten produktiv eingesetzt und soll auch ne gute Performance zeigen. Das konnte ich aus den Reviews rauslesen. asio ist jedenfalls nutzbar, auch wenn es hier und da Kritik gab, aber das ist ja normal, das man es nicht allen C++lern Recht machen kann.



  • Ok, die Winsocks hab ich mal erstellt (Ich weiß, klasse Leistung ^^)
    was macht jetzt die bind(..) Funktion genau?



  • man: bind(2)

    Lies dir am besten ein Tutorial durch.



  • Ähm Frage: Borland C++ Builder 5?

    Welche edition denn? Gibts bei dir auch die TClientSock-Komponenten?



  • äm, ka. wo kann ich das nachschauen?
    aber ist auch nicht so wichtig eigentlich. ich mach das meiste eh zuhause, da hab ich borland 6, das geht auch.



  • Naja du hast ja mehrere Komonenten zur Auswahl? In der Regel hat da irgendwo son Tab "Internet" oder so.



  • ich hab das jetzt mal soweit, allerdings kommt bei bind() immer ein Fehler, auf 127.0.0.1 kann er aber anscheinend trotzdem verbinden?!

    ]//---------------------------------------------------------------------------
    #include <windows.h>
    #include <winsock.h>
    #include <vcl.h>
    #pragma hdrstop
    #include <iostream.h>
    #pragma argsused
    
    //Prototypen
    
    int startWinsock(void);
    
    int main()
    
    {
    
      long rc;
      SOCKET s;
      SOCKADDR_IN addr;
    
      char buf[256];                       // Anzahl Zeichen, die gesendet werden
      char conIP[15] = "127.0.0.1";        // Ziel-IP Adresse
      int conPort = 135;                   // Verwendeter Port
    
      memset(&addr,0,sizeof(SOCKADDR_IN)); 
      addr.sin_family=AF_INET;
      addr.sin_port=htons(conPort);        // htons() = Konvertierung für Netzwerk
      addr.sin_addr.s_addr=inet_addr(conIP);
    
      rc=startWinsock();
    
      if(rc!=0)
      {
        cout << "Fehler: startWinsock, Fehlercode: %d\n" << rc;
        return 1;
      }
      else
      {
        cout << "Winsock gestartet!\n";
      }
    
      s=socket(AF_INET,SOCK_STREAM,0);
    
      if(s==INVALID_SOCKET)
      {
        cout << "Fehler: Der Socket konnte nicht erstellt werden, Fehlercode: %d\n" << WSAGetLastError();
        return 1;
      }
      else
      {
        cout << "Socket erstellt!\n";
      }
      rc = bind(s, (SOCKADDR*)&addr, sizeof(addr));
      if(rc == SOCKET_ERROR)
      {
        cout << "Fehler: Socket konnte nicht gebunden werden: " << WSAGetLastError() << endl;
      }
    
      rc=connect(s,(SOCKADDR*)&addr,sizeof(SOCKADDR));
    
      if(rc==SOCKET_ERROR)
      {
        cout << "Fehler: konnte nicht verbunden werden, Fehlercode: %d\n" << WSAGetLastError();
        return 1;
      }
      else
      {
        cout << "Verbunden mit " << conIP << "\n";
        strcpy(buf,"Hallo wie gehts?");
    
        rc=send(s,buf,9,0);
    
        if (rc == -1) printf("Noo\n");
        else printf("Yes!\n");
    
        rc=recv(s,buf,256,0);
        if (rc) printf("Yes\n");
        else printf("Nooo!\n");
      }
    
      getchar();
      return 0;
    
    }
    
    int startWinsock(void)
    
    {
    
      WSADATA wsa;
    
      return WSAStartup(MAKEWORD(2,0),&wsa);
    
    }
    

    ]


Anmelden zum Antworten