# udp erkennen um welches objekt es sich handelt / max size



## blackbox87 (4. Jan 2012)

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


----------



## TheDarkRose (4. Jan 2012)

Du mögest TCP verwenden. Denn bei UDP ist es nicht garantiert, dass dein Paket ankommt.


----------



## musiKk (5. Jan 2012)

Und zusätzlich dazu:



blackbox87 hat gesagt.:


> 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?


----------



## blackbox87 (5. Jan 2012)

Hallo....

Nein gibt eigentlich keinen richtigen Grund. 
Danke werde es dann wohl mit TCP machen. 

liebe grüße


----------



## Gast2 (5. Jan 2012)

blackbox87 hat gesagt.:


> 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



musiKk hat gesagt.:


> 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


----------



## TheDarkRose (5. Jan 2012)

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.


----------

