Winsock DAten in richtiger Reihenfolge empfangen?!
-
Ich sende z.Z. Daten über SOCK_STREAM (TCP)
wave is short, deswegen (char*)!!!
SENDER: rc = send(s,(char*)wave,sizeof((char*)wave),0); int xyz = 0; cout << "Sende:" << wave[0] << endl;
Empfänger: rc =recv(connectedSocket,(char*)&wave,sizeof(wave),0); cout << "Empfange:" << wave[0] << endl;
Nun ist das Problem, dass ich die Daten in der richtigen Reihenfolge haben möchte ... also so wie sie versendet wurden. Leider würfelt der beim Senden alles durcheinander ... weil die Pakete mal schneller und mal langsamer sind ... wie kann ich das verhindern?!
Bzw wie kann ich die Daten nachher wieder so aufbereiten, dass sie so sind wie sie gesendet wurden?
-
Bei SOCK_STREAM wird nichts durcheinandergewürfelt. Du sendest falsch.
Was genau ist wave?
-
Sender:
typedef short telegram_type[SIZE_DATA]; //SIZE_DATA = 1024 telegram_type wave;
Empfänger
SHORT wave[1024];
Somit sind das werte wie z.B. 12349 oder -1253
Ich habe einfach ne if-Schleife, die solange séndet, bis nen socket error kommt, also im Prinzip unendlich. Und auf der anderen Seite habe ich nen Empfänger der so lange Empfängt bis nen socket-error kommt.
In Echtzeit wird dann das Ganze an einen anderen Programmteil gesendet, der das Verarbeitet ... z.b. speichert, abspielt wie auch immer. Ich arbeite da mit Threads.So wie ich das im moment sehe kommen am Anfang alle Werte an, dann nurnoch jeder 2. und das wird dann unregelmäßig immer weniger ...
verstehe ich nicht ...
-
rc = send(s,(char*)wave,sizeof(wave),0);
Sonst sendest du nur soviele Bytes, wie ein Zeiger auf char groß ist.
-
Erstmal danke für die schnelle Hilfe
Naja nun kommt dieses tolle windows fehlermeldungsfenster, dass er nicht in den angegebenen Speicherbereich (written) schreiben kann *verzweifel*
-
Bei recv muss das & vor wave weg.
-
Immer diese dummen Fehler, weil man noch nicht alles 100% kapiert
Naja bin ja noch nen NeulingJetzt läuft es auf jeden Fall, DANKE !!!!