dateien senden/empfangen
-
also ich trau mich echt fast nicht die frage zu stellen aber weil ichs wissen will mach ich stotzdem
ich hab einen kleinen chat geschrieben jetz wollte ich auch das man dateien versenden kann.
ich hab natürlich glein ein probeprog geschrieben das einfach eine datei kopiert indem die datei geöffnet wird 1024bytes gelesen werden und die dann auch gleich in eine andere datei geschrieben werden
aber es ging immer daneben ich glaub wegen den "\0".also meine frage ist nun wie verschickt man ordnungsgemäß dateinen über ein netzwerk??
mfg killakathl
-
Beachtet, das recv() nicht unbedingt 1024 bytes empfängt, wenn du im mitteilst, dass der buffer 1024 bytes groß ist und gegebenfalls mehrmals aufgerufen werden muss ?
-
wieso das???
nein bei mir hat das normale kopierprogramm (ohne sockets) schon nicht funktioniert...
hast du vielleicht ein beispiel wie man daten kopiert/verschickt
mfg killakathl
-
Wenn es nur an \0 hing, dann liegt es wahrscheinlich daran, dass du irgendwo eine Stringfunktion auf den Datenbuffer anwendest - z.B. zur Ermittlung der Länge - \0 zeigt aber normalerweise das Stringende an.
-> keine Stringfunktionen verwenden
PS: Ist natürlich nur eine Vermutung - gut möglich, dass es auch ein ganz anderes Problem sein kann.
-
wie soll ichs dann anstellen daten zu verschicken???
mfg
-
Hm, zeig doch mal deinen bisherigen Code. Das einzige, was du eigentlich beachten musst, ist, dass du kein strlen o.ä. auf den Buffer anwenden kannst (kommt eben nichts brauchbares heraus)
-
ich hab den code nicht mehr mir isses nur jetz wieder eingefallen
aber ich habs so ca gemacht:die länge der datei heausfinden
danach die ersten 1024bytes lesen sie in eine andere datei schreiben und den filepointer um den gelesenen wert (1024) versetzen
danach kontrolier ich ob die verbleibende grösse gößer als 1024 is
wenn sies is dan mach ich das gleiche wieder so lange bis die datei kleiner is und beim letztden durchlauf les ich dan den rest ein und verlasse die schleife...aber bei exe dateien kam danach bei der ausführung immer eine fehlermeldung....
also hats nicht so funktioniert...
kanns sein das die c++ funktion zum dateienlesen den den buffer terminiert???
(datei.getline(buffer, strlen(buffer)) (oder ist dieses strlen der fehler??? wenn ja änderts was wenn ich die größe gleich reinschreib))mfg killakathl
-
Dieses strlen könnte auf jeden Fall eine Ursache sein - allerdings habe ich schon bei getline ein schlechtes Gefühl (liest doch sicher nur bis \n o.ä.). Mit der WinAPI würde ich es halt einfach mit ReadFile machen

-
ok danke ich werds mal versuchen wenns nicht geht komm ich sicher wieder ggg
mfg und danke killakathl