Guten Tag,
nachdem mein Thread "Packetkontrolle" aufgrund einiger Streitereien vorerst gesperrt wurde, nutze ich die Zeit um eine für euch kleine Frage zu stellen...
Ihr könnt gerne darüber diskutieren, aber bitte bleibt sachlich und höflich
Wie dieser Threadname schon sagt, geht es um Variablenaustausch über TCP/UDP...
Da dieses Thema sehr "grob" gehalten ist, hoffe ich, dass es zulässig ist mehrere Unterfragen zu stellen...
So nun zum Thema.. Stellt euch vor es existieren 5 Variablen
Delphi-Quelltext
1: 2: 3: 4: 5: 6:
| var Text: String; Zahl: Byte; Punkt: TPoint; Zeichen: Char; UndRest: Integer; |
Diese Variablen sollen (z.B. bei einem 2D- Egoshooter) konstant gehalten werden (also auf allen Rechnern gleich)
TCP wäre dabei sehr langsam aber sicher.. müsste aber bei solch kleinen Austäuschen (ca 1 MB) doch t-dem schnell genug sein..
UDP unsicher aber auf jeden Fall schneller..
Streams oder Strings?
Ich könnte es in einen String schreiben.. z.B.
Delphi-Quelltext
1: 2: 3:
| ZuSendenderText := IntToStr( Zahl ) + #13#10 + IntToStr(Punkt.X) + #13#10 + IntToStr( Punkt.Y ) + #13#10+ Zeichen +#13#10 + IntToStr( UndRest ) + #13#10 + Text; |
Diesen Text würde ich senden und auf der anderen Seite wieder zerlegen.. (deshalb auch Text am Ende, da hier die Trennugn (#13#10) drin enthalten sein kann)
oder in einen Stream schreiben
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7:
| var MS: TMemoryStream; begin MS := TMemoryStream.create; MS.write( dasRecord, SizeOf( dasRecord ) ); end; |
Frage 1: TCP oder UDP ?
Frage 2: Stream oder String ?
Nachtrag: Und vor allem, wie ist es mit dem "Dauersenden" bei einem Stream weiß der Empfänger ja nicht wann "Ende" ist, da man viele Records-Stream hinternander schickt wäre das ein Nachteil oder? Bei Strings käme alles gleichzeitig an -> Vorteil ?
Wie kann ich also diese "Stream-Packete" erkennen/ einteilen? immer ein #0 ans ende setzten oder wie