Autor Beitrag
NeWsOfTzzz
ontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic star
Beiträge: 233


D4 Prof
BeitragVerfasst: Di 26.10.04 01:53 
type
IntegerStringrecord = record
msgType: Byte;
Len: Word;
int:integer;
msg:array[0..0] of Char;
end;

ich hab nur einfach versucht mit

type
Plainrecord = record
msgtype:byte;
end;

an das erste byte zu kommen, nur ist danach alles wuschelig und nix klappt mehr..
Also zuerst mit receivebuf versucht die Nachricht in ein anderes Record(plainrecord) zu "pressen", aber dafür ist danach das zweite receivebuf dann total falsch mit dem richtigen record(integerrecord)

Die einzige andere Methode die mir noch einfällt wäre da ein reines msgtype paket zu schicken und danach erst das eigentliche Paket.. wäre nur extrem blöd wenn das so aussehen sollte:
paket1: msgtype
paket2: string
paket3: msgtype
paket4: integer
und nun das draus wird wegen verzögerung oder keine ahnung:
paket1:msgtype
paket2:msgtype
paket3:string
paket4:integer
oder wenn ein packet nicht ankommt:
paket1:msgtype
paket2:string
paket3:integer

Ich meine ich könnte auch nur den Integerstringrecord nehmen, selbst wenn ich kein integer habe.. das sind dann halt 4 byte zusätzlich verschwendet für nen string, aber das ist eigentlich auch net so schlimm. Natürlich auch blöd wenn ich sagen wir mal ein Datenpaket habe mit 10 Integer Werten dann müsste ich die auch einzeln verschicken... naja wenn ihr net wisst wie man am das am besten macht, dann sagt mir wenigstens ob solche Verzögerungen, dass pakete in der falschen reihenfolge ankommen überhaupt existieren? Oder dass überhaupt ein Paket gar nicht ankommt...? Weil notfalls kann man immer noch mit try except das ganze abfangen und dann so ne Art bestätigungsnachricht schicken wenn´s geklappt hat..

Oder... das versuch ich jetzt mal.. Die Nachricht in ein Array of Byte zu lesen und dann das x-te Byte auszulesen.. einen Versuch ist es wert..

...
Das Problem liegt an dem ReceiveBuf.. da der zweite Aufruf von ReceiveBuf nur noch Müll ausspuckt.. die einzige Möglichkeit wäre es, das Array of Byte einzulesen und dann in das passende Record umzuwandeln.. aber wie?
NeWsOfTzzz Threadstarter
ontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic star
Beiträge: 233


D4 Prof
BeitragVerfasst: Di 26.10.04 12:49 
Ich les jetzt mit Receivebuf die Nachricht in ein Array of Byte ein, das erste Byte gibt mir den Nachrichtentyp (kann erweitert werden auf Word also 2 Bytes) an und danach packe ich, je nach Nachrichtentyp, das ganze Array of Byte Stück für Stück in das passende Record und damit kann ich dann arbeiten...
Bin ich denn der erste der mit Winsocket mehr machen will als immer das gleiche Record zu verschicken? Ich hab das halbe Inet durchsucht und nirgendwo gab´s ne Lösung.. Dafür bin ich jetzt um so stolzer, dass ich die Problemlösung selbst entwickelt habe ^^
arcitC|Crash
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 88


D4 weiter weiß ich net
BeitragVerfasst: Di 26.10.04 20:02 
Hehe sauber! :D