Dateien über Netzwerk senden
-
Dann ließt Du sie Binär aus und sendest das dann übers Netz. Dort schreibst du das wieder in eine Datei.
Mehr ist es nicht.
Netzwerkfunktionen welche nur ala senfile(from, to) erledigen nur das öffnen, schließen u.s.w.
Mehr ist aber nicht dahinter.
-
Hallo,
Wie man das handhabt ist eigentlich (fast) Geschmackssache. Du kannst dir auch eine andere Möglichkeit ausdenken wie du sendest:
z.b Bild Pixel für Pixel auseinandernehmen und die Position eines jeden abspeichern und dann noch die Farbe.
class bild{
int x;
int y;
int color;
};Macht man über Sockets.
MFG winexec*
-
auf
www.pronix.de openbooks linux-unix netzwerkprog.wird das für linux ganz gut erklärt...
wenn du linux benutzt dann guck dir das mal an
-
hab leider nur xp drauf, aber danke soweit, werd mal weiter rumprobieren
-
wenn ich jetzt beispielsweiße ein wallpaper mit 1024x768 pixel versenden will und den binär auslese, wie viel zeichen muss ich da dann circa angeben, wenn ich mit send() arbeite?
-
while(getc(FILE *) != EOF) file_size++;und schon hast du die groesse
-
Moh schrieb:
while(getc(FILE *) != EOF) file_size++;und schon hast du die groesse
nö, bei Binär-Dateien gibt es afaik kein EOF.
@Abrow
über Systemfunktionen findet man raus, wie groß eine Datei ist. Keine Ahnung welche Funktionen das für Windows sind. Bei Unix oder Linux ist es man: stat(2).
-
Hallo,
Du kannst theoretisch die Filestream benutzen:
file.seekg(0L,SEEK_END);
file.tellg();MFG winexec*
-
winexec* schrieb:
Du kannst theoretisch die Filestream benutzen:
file.seekg(0L,SEEK_END);
file.tellg();Funktioniert bei Binär-Dateien so weit ich weiß auch nicht
-
Hallo,
Alle Dateien sind binär.
MFG winexec*
-
also bei mir funktioniert meine methode einwandfrei, ich hab erst letztens einen file-splitter mit dieser methode gebastelt...
der splitter zerlegt eine originaldatei in mehrere kleine dateien und ein unsplitter kann diese wieder zusammensetzen. und die zusammengesetzte datei entsprach exakt dem original
edit:
probier doch mal
while((c = getc(FILE *)) != EOF) putc(c, FILE*);mit einer mp3 datei oder einem video. (dass alles binaer geoeffnet werden muss ist klar) es sollte eine exakte kopie machen...
-
also eigentlich sollte dies doch folgendermasen funktionieren:
FILE* filestream = fopen("Datei.dat", "r"); if(!filestream) { return; } if(!fseek(filestream, 0, SEEK_END)) { long lsize = ftell(filestream); if(lsize > 0) { char* pBuffer = (char*)malloc(lsize); if(pBuffer) // Danke Swordfish ^^ { if(!fseek(filestream, 0, SEEK_SET)) { long lcount = fread(pBuffer, sizeof(char), lsize, filestream); if(lcount < lsize); // Es gab einen Fehler oder das Ende des Files wurde erreicht. Siehe ferror bzw. feof // Daten senden } free(pBuffer); } } } fclose(filestream);Oder nicht?
Denn so hat man ein Array von char Werten, welche er versenden kann. Drüben muss das ganze halt dann nur wieder in der richtigen reihenfolge in ein File geschrieben werden (fwrite).Edit:
Kleine korrektur im Code ...Grüssli
-
Dravere schrieb:
if( !pBuffer )wohl eher:
if( pBuffer )Greetz, Swordfish
-
Moh schrieb:
while(getc(FILE *) != EOF) file_size++;und schon hast du die groesse
Habs jetzt so gemacht, funktioniert einwandfrei, danke
