[WinSock]UDP - Datenübertragung
-
Hallo,
ich möchte gern ein Programm schreiben, (bzw. mein jetziges Program mit dieser Fuktion erweitern) welches Daten per UDP verschickt bzw empfängt. Ich habe in Java ein Server geschrieben, welcher komplette Dateien ( z.b. *.exe dateien etc.) an mein Client schicken soll. Dieser Client ist in c++ geschrieben. Meine ursprüngliche Idee war es, die Daten Byte-weise auszulesen und zu versenden. Das einzige Problem daran besteht, dass es in z.b. *.exe Dateien Null-Terminatoren ( /0 -> oder wie auch immer man sie nennen mag) enthält. Wenn ich also versuche, eine solche Datei an den Client zu versenden, bricht er den Empfang bei diesem 'Zeichen' ab!
Meine Frage an Euch: Wie kann ich das am besten bewerkstelligen? Gibt es vlt schon vorgefährtigte "Codeschnippsel" die Dateien per UDP versenden?
EDIT: Der Client ist für Windows geschrieben. Also benutze ich bis jetzt "winsock"
MFg
-
"die Dateien per UDP versenden"
Ganz böse Idee!
Nimm auf jeden Fall TCP und nicht UDP!
-
Der am meisten verbreitete Fehler wenns um die Auswahl UDP oder TCP geht ist UDP zu verwenden und dann Sequenz Nr., Retransmission, etc. einzubauen bis man ein selbstgestricktes TCP hat, einfach voller Fehler..

Als Argument muss dann immer die Geschwindigkeit herhalten..
Simon
-
Na gut dann nehmen wir einmal an, dass ich TCP nehme. Dann bleibt doch abeer immer noch mein ursprüngliches Problem... neähmlich dieser Null-Terminator.
Kann man den irgendwie "ignorieren" und sagen "Hier lies GENAU soviele Zeichen anstat auf den Null-Terminator zu warten!"?
-
Rainu schrieb:
Na gut dann nehmen wir einmal an, dass ich TCP nehme. Dann bleibt doch abeer immer noch mein ursprüngliches Problem... neähmlich dieser Null-Terminator.
Kann man den irgendwie "ignorieren" und sagen "Hier lies GENAU soviele Zeichen anstat auf den Null-Terminator zu warten!"musste die datei als binärdaten verschicken, nicht als ascii-format oder sowas, dann stören nullen auch nicht. am einfachsten ist wohl, du jubelst dem ganzen ein kleines protokoll unter, z.b. zuerst sendeste die anzahl bytes im file (als size_t oder so) und dann die daten selber. oder du sendest pro datei einfach nur die daten und machst am schluss die verbindung zu (daran erkennt dann der empfänger, dass die übertragung einer kompletten datei zuende ist).
