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 wegeninput.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!