TransmitFile ?

Prüfe auch, ob send wirklich alles weggesendet hat
Ich sende doch gar nicht mit send sonderen mit TransmitFile :)
Ich werde jetzt den recv-teil in eine while() schleife packen mal schauen ob es klappt.

[edit]
@Endurion
Du hattest doch recht ich glaube ich habe den Fehler gefunden. Es liegt am empfangenen Puffer. Ich sollte doch die Datei größe zuerst senden :)
Wie kann ich die Datei größe erhalten ?
[/edit]

mfg progX :-)
 
Zuletzt bearbeitet:
Nur eine kleine Frage wie ist es möglich einen unsigned long über send zu versenden und ihn dan auch in gleicher form beim server zu erhalten ?
 
Schreib die Grösse in eine Variable (int oder Ähnliches),

schreib diese mit send rein, empfangen mit recv (zur Zeit ist int 32 bit gross, erspart mir Kommentare wie int kann aber unter Umständen...). Benutze sizeof, damit die Grösse nicht abweicht, aber sicherstellen, dass auf beiden Seiten sizeof dieselbe Grösse hat.

send( socket, (char*)&intVariable, sizeof( intVariable ), 0 );
 
Senf dazugeben.

Für Datenarrays empfehle ich immer unsigned char[n] und nicht char[n].
Außerdem würde ein sizeof(buf) meißtens 4 zurückgeben (zumindest auf einem 32Bit System) da buf ja ein Zeiger ist und die Größe eines Zeigers 4 Byte hat. Also Vorsicht Falle !
(zur Zeit ist int 32 bit gross, erspart mir Kommentare wie int kann aber unter Umständen...)
Nein :-)
Grösse nicht abweicht, aber sicherstellen, dass auf beiden Seiten sizeof dieselbe Grösse hat.
Das ist verdammt gefährlich, da man ja nicht weiß was die Gegenseite ist.
TCP/IP gibt es nicht nur unter Windows mit 32 Bit (Ok irgendwann mal 64 bit) sondern auch unter UNIX mit anderen Größen.
Ok ich weiß das Ganze ist nur für Windows gedacht, aber selbst wenn es dort mal "echte" 64bit gibt (soll ja kommen) dann darfst du das wieder umschreiben.

Gruß Homer
 
Re: Senf dazugeben.

Original geschrieben von Daniel Toplak
Das ist verdammt gefährlich, da man ja nicht weiß was die Gegenseite ist.
TCP/IP gibt es nicht nur unter Windows mit 32 Bit (Ok irgendwann mal 64 bit) sondern auch unter UNIX mit anderen Größen.
Ok ich weiß das Ganze ist nur für Windows gedacht, aber selbst wenn es dort mal "echte" 64bit gibt (soll ja kommen) dann darfst du das wieder umschreiben.
Gruß Homer

Genau das meinte ich eigentlich mit sicherstellen. Also entweder auf 32bit oder 64bit oder wasauchimmer festlegen und dann den Code entsprechend anpassen.

Lautes Gedenke: In der Hinsicht (64bit) sollte man eigentlich int verbieten können. Aber es ist soooo schön einfach: int, passt schon. ;)
 
Zurück