sockets



  • int startWinsock()
    {
      WSADATA wsa;
      return WSAStartup(MAKEWORD(2,0),&wsa);
    }
    
    SOCKADDR_IN addr;
    long rc;
    SOCKET s;
    char buf[256];   //Buffer mit 256 Bytes zum senden - muss nur senden!
    
    rc=startWinsock();
    
    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 erstellt!\n");
    }
    
    memset(&addr,0,sizeof(SOCKADDR_IN)); // Damit gewähren wir 0 Werte^^
    addr.sin_family=AF_INET;
    addr.sin_port=htons(21); // Zufallsport hat nicht irgend n Trojaner auch port 12345? hmmmm
    addr.sin_addr.s_addr=inet_addr("127.0.0.1"); // auf localhost^^
    rc=connect(s,(SOCKADDR*)&addr,sizeof(SOCKADDR));
    
    if(rc==SOCKET_ERROR)
    {
      printf("Fehler: connect gescheitert, fehler code: %d\n",WSAGetLastError());
    }
    else
    {
      printf("Verbunden\n");
      //Wir sind verbunden und können uns nun am ftp server anmelden das geht so:
      strcpy(buf,"test");  //Der Username lautet eben test das Passwort auch^^
      rc=send(s,buf,4,0);  //Wir senden 5 Zeichen rc muss auch 5 als Wert haben, wenn alles OK
      //nun zum Passwort
      rc=send(s,buf,4,0);  //Wieder 5 Zeichen
    }
    
    cin>>test;
    FindClose(fHandle);       
    }
    

    So... habe also einen FTP Server lokal installiert und es gibt einen Usernamen "test" mit dem Passwort "test". Irgendwie scheint aber der Login nicht zu funktionieren per C++ Socks... Was mach ich an diesem Script eigentlich falsch?

    Ausgabe:
    Verbunden
    Der FTP-Server meldet auch, dass wir verbunden sind, aber irgendwie nimmt er die Username/Passwort abfrage nicht....



  • bin gerade draufgekommen, das dass so nicht funzen kann und habe es dan nso überarbeitet aber immer noch kein erfolg

    else
    {
      printf("Verbunden\n");
      //Wir sind verbunden und können uns nun am ftp server anmelden das geht so:
      strcpy(buf, "USER test");  //Der Username lautet eben test das Passwort auch^^
      rc=send(s,buf,10,0);  //Wir senden 5 Zeichen rc muss auch 5 als Wert haben, wenn alles OK
      if (rc != 10)
      {
         cout<<"error";      
      }
      cout<<buf;
      //nun zum Passwort
      strcpy(buf, "PASS test");
      rc=send(s,buf,10,0);  //Wieder 5 Zeichen
      if (rc != 10)
      {
         cout<<"error";       
      }
      cout<<buf;
    }
    


  • du sendest ja nur testtest an den server. das enspricht sicherlich nicht dem ft-protokoll. seit wann sind 4 zeichen 5 zeichen?



  • du musst die befehle doch auch durch einen neue zeile abtrennen sonst sieht der server doch alles als Username an



  • und wie trenn ich denn ab?
    \0
    \n
    helfen irgendwie nicht^^



  • \r\n



  • else
    {
      printf("Verbunden\n");
      //Wir sind verbunden und können uns nun am ftp server anmelden das geht so:
      strcpy(buf, "USER test\r\n");  //Der Username lautet eben test das Passwort auch^^
      rc=send(s,buf,12,0);  //Wir senden 5 Zeichen rc muss auch 5 als Wert haben, wenn alles OK
      if (rc != 12)
      {
         cout<<"error";      
      }
      cout<<buf;
      Sleep(1000);
      //nun zum Passwort
      strcpy(buf, "PASS test\r\n");
      rc=send(s,buf,10,0);  //Wieder 5 Zeichen
      if (rc != 10)
      {
         cout<<"error";       
      }
      cout<<buf;
    }
    

    funzt auch net^^



  • Vllt. hilft es auch zwischendurch mal die Antworten des Servers zu lesen 😉

    EDIT: "USER test\r\n" sind 11 Zeichen und bei PASS auch. und nicht 12, 5 und/oder 10 😉



  • ok danke 😃
    jetzt läufts^^

    noch n kleines prob^^
    ich will jetzt eine Datei raufspeichern das geht ja so:

    put C://test.txt test.txt

    das scheint aber nicht zu klappen^^



  • Scherzbold. Glaubste die Daten der Datei wandern von alleine durch die jeweiligen parallelen Datentunnel, wovon du nichtmal einen aufgebaut hast?



  • hmmm

    wenn ich folgendes mache:
    ftp 127.0.0.1
    test
    test
    put quelle ziel

    dann klappt es aber...
    was muss ich bei meinen sockets abändern dass es auch so klappt?



  • OMG biste dumm?



  • also hilfst du mir?



  • Nur für Geld.



  • Entenwickler schrieb:

    OMG biste dumm?

    Entenwickler schrieb:

    Nur für Geld.

    Super du hast es geschafft, dass ich 5min fuer eine Registrierung verschwende.
    Hinweis: Du solltest auch aufhoeren dich im wahren Leben als Frau auszugeben, das bringt dir keine Freunde!



  • was???? lol

    du bist ja lächerlich weißt nicht mal wer ich bin wenn ja dann schreib doch die addresse und so weiter hier rein du n00b



  • Dieser Thread wurde von Moderator/in evilissimo aus dem Forum 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.



  • weiß net wie ich dir helfen könnte^^


Anmelden zum Antworten