Dateien senden übers Netzwerk mit Visual C++



  • Hallo,
    ich habe folgendes Problem:
    Habe eine Netzwerkverbindung mit Winsock und will über diese Dateien jeglicher Art versenden. Ich habe mal gelesen, das man die Datei Binär auslesen kann, diese dann verschickt und danach die Daten wieder in eine Datei schreibt.
    Nur weiß ich nicht wie ich das genau machen soll. Falls jemand Ideen und Erfahrung zu diesem Problem hat, bin ich über jeden Rat sehr dankbar.
    Vielen Dank schon im voraus.



  • wenn du mit WinSock arbeitest, legst du dir nen Buf an und speicherst da dein Zeugs rein.

    char* str = new char[4];
    int tmp = 45;
    int * itmp = (int*)str
    *int = tmp;

    müsste doch gehen?!



  • Hallo,

    habe vor das selbe bald selber zu versuchen (Dateien ueber Netzwerk zu versenden). Aber frage mich dabei ob das mit allen Dateien geht. Also auch .exe oder .LNK. Oder gehen die dadurch irgendwie 'kaputt'? 😕

    MfG, Heimdall83



  • geht mit allen Dateien, wenn Du sie binär ausliest und schreibst.
    ist als würdest Du sie 1:1 kopieren, nur halt übers Netz...



  • mit welchem Befehl liest man eine Datei binär aus bzw. mit welchem Befehl speichert man die Daten dann in eine Variable?



  • du musst beim öffnen der Datei das "Binaryflag" angeben. Wenn du mit CFile oder CStdioFile arbeitest reicht einfach

    CFile::typeBinary
    


  • Ich habe das selbe Problem (Benutze zwar Dev-Cpp aber egal).
    Ich versuche einen kleinen Web-Server zu schreiben
    Ich habe schon alles fertig (die angeforderte Datei aus
    dem HTTP GET Befehl extrahieren, mehrere Clienten mit select usw.)
    aber:Ich kriegs einfach nicht hin eine Datei
    binär auszulesen und zu senden
    (bzw. Das Empfangene binär zu schreiben)
    Mit Textdateien klappt es Wunderbar.

    Mein Code zum Datei einlesen:

    ...
    //Nur der Teil für Dateien auslesen!
    #include <fstream>
    
    fstream input;
    input.open(datei,ios::binary)//Wie im Lehrbuch :)
    
    char Message[1024]=""; //Ich denke ihr wißt was das bedeutet
    
    char zeichen=input.get();
    
    int a;
    for(a=0;!in.eof;a=a+1)//for schleife um gelesenen Inhalt in 
                          //Char Array zu schreiben
    {
        Message[a]=zeichen;
        ch=in.get();
    }
    
    in.close();
                          //Jetz noch senden;
    send(socket,Message,strlen(Message),0)
    

    Der Fehler ist nicht bei:char Message[1024]="";
    Da die Datei kleiner ist!
    Vieleicht wegen

    input.eof()
    

    ->Dies ist wahrscheinlich der Grund!
    aber Wie soll ich eine Datei ohne .eof() auslesen? 😕

    oder ist

    input.get()
    

    nich gut?

    oder wo is der Fehler?

    Wäre schön wenn einer ne Hilfreiche Antwort schreiben könnte?!
    bin erst 15 + Anfänger(c++).

    Ich glaube ich schreibe die URL wo man den fertigen Server Downloaden kann
    lieber nicht hier rein sonst flieg ich wegen werbung oda so?!



  • Bin ich blind oder wo ist ch definiert?



  • Oh tut mir leid,
    noch mal der überarbeitete text:

    fstream in;
    in.open(datei,ios::binary);
    
    char msg[1024]="";
    char ch=in.get();
    int a;
    for(a=0;!in.eof();a=a+1)
    {
        msg[a]=ch;
        ch=in.get();
    }
    in.close();
    send(socket,msg,strlen(msg),0);
    


  • Nach dem ich die letzten Beiträge gelesen habe , habe ich selbst versucht
    einen Datei-kopierer zu basteln
    (Mit WinAPI):

    #include <windows.h>
    CopyFileA("bit.bmp","bit_copy.bmp",1);
    

    (ohne WinAPI)
    http://acp-clan.ath.cx/cpp/cpp_copy_datei.html
    funktioniert einwandfrei allerdings
    habe ich es nicht geschaft eingelesene Daten
    in einen Char array zu schreiben und diesen zu senden
    vieleicht funktioniert es aber auch wenn mann jedes
    Zeichen einzeln sendet:

    ...
    for(a=0;!in.eof();a=a+1){
    send(socket,ch,strlen(ch),0);
    ch=in.get();
    }
    ...
    

    ich würde auch gerne mal wissen wie mann die ganzen gelesenen
    Daten in einen Char Array schreibt und diese dann sendet
    mein Versuch sie rein zu schreiben:
    http://acp-clan.ath.cx/cpp/char_array.html
    Schlug fehl
    WARUM?
    ihr experten seid gefragt!


Anmelden zum Antworten