udp erkennen um welches objekt es sich handelt / max size

blackbox87

Mitglied
Hallo,

Ich habe zwei fragen:

Ich verschicke zwischen meinen komponenten "nachrichten" über UDP... Ich habe vor die Nachrichten als OBjekte zu verpacken sie zu serialisieren, und am anderen ende wieder zu deserialisieren. Am Receiver ende hört ja ein Listener auf einkommende Daten. Dort soll je nach objekt, etwas anderes passieren, also wird ist es notwendig zu erkennen was geschickt worden ist? Meine erste Frage ist: Gibt es für sowas ein spezielles Pattern wie man das macht? Oder kann/soll ich am Receiver nach dem Deserialisieren einfach instanceof machen oder getClass ???? Wie macht man das halbwegs "elegant" ?

Zu meiner Zweiten Frage: Ein DatagramPackage kann ja nicht beliebig groß sein, sondern es gibt eine Maximale Größe. Was wenn das Objekt größer ist? Muss ich das dan "zerstückeln" und in der richtigen reihen folge am Empfänger wieder "zusammenstöpseln" .. das Stell ich mir kompliziert vor... kann mir jemand dazu etwas sagen?


Liebe Grüße,
blackbox87
 
Und zusätzlich dazu:

Zu meiner Zweiten Frage: Ein DatagramPackage kann ja nicht beliebig groß sein, sondern es gibt eine Maximale Größe. Was wenn das Objekt größer ist? Muss ich das dan "zerstückeln" und in der richtigen reihen folge am Empfänger wieder "zusammenstöpseln" .. das Stell ich mir kompliziert vor... kann mir jemand dazu etwas sagen?

UDP garantiert im Gegensatz zu TCP auch keine Reihenfolge. Das ist aber wirklich "Networking 101".

Gibt es denn einen Grund, der gegen TCP spricht?
 
Zu meiner Zweiten Frage: Ein DatagramPackage kann ja nicht beliebig groß sein, sondern es gibt eine Maximale Größe. Was wenn das Objekt größer ist? Muss ich das dan "zerstückeln" und in der richtigen reihen folge am Empfänger wieder "zusammenstöpseln"
wenn das Paket größer als die MTU ist wird automatisch zerstückelt und am Ende wieder zusammen gesetzt ... darum kümmert sich automatisch das Netzwerk ... ist also für den normalen Programmierer nicht zu beachten

UDP garantiert im Gegensatz zu TCP auch keine Reihenfolge.
nur halb richtig ... wenn das UDP Paket größer als MTU ist, wird es zerstückelt - am Ende aber wieder richtig zusammen gesetzt ... wenn ein Teilpaket verloren geht wird das gesamte Paket verworfen - der Ausfall ist also größer je größer die UDP-Pakete sind ... richtig ist aber das das UDP-Paket B, was nach Paket A geschickt wurde, vor Paket A ankommen kann

hand, mogel
 
Wobei UDP selbst auch eine Größenbeschränkung hat. Liegt glaub ich bei 65k Bytes oder so. Fragmentiert wird so uns so, wenn Pakete größer als die MTU sind.
 

Neue Themen


Zurück
Oben