Socket Input Stream Bitweise verarbeiten

Marius Heil

Erfahrenes Mitglied
Hi,

ich bin gerade dabei nen Socketserver in Java zu schreiben, er tut auch schon ziemlich gut bisher, inklusive User und Raumverwaltung. Nun sollen einige Werte an den Server geschickt werden, zB Koordinaten.
Es wäre arg verschwenderisch wenn ich den String einfach UTF-codiert rüberschicke, das kostet mich pro Zeichen nämlich 16 bit. In 16 bit bekomme ich jedoch bereits alle Koordinaten die ich brauche unter.
Jetzt ist meine Frage:
Die Daten werden ja meist bis zu einem Nullbyte oder so gesendet. Wenn ich das nun richtig verstehe kommen also 00000000 bit an, und der Server glaubt die Übertragung sei fertig. Was passiert nun wenn meine Koordinate zb 0 ist und dann auch so eine kette an 0bits ruaskommt?
Wird dann die Verbindung unterbrochen oder verwechsle ich da was?

Marius
 
Hallo,
nur mal ein Vorschlag, du könntest doch die Anzahl der Bytes ermitteln bevor Du sendest und diese in einem Header Frame mitschicken.

D.h.
Code:
byte[] data = new byte[11];

//Header info
data[0] = 0x000A;  
// Byte 1 ... n Koordinaten oder what ever
data[1] = 0x0001;  
...
data[9] = 0x000A;  

// Und nun die Daten senden, Sender und Empfänger müssen 
//das Header Byte //kennen und auswerten können

Das Beispiel ist erweiterbar das heist Du kannst im Header auch mehr definieren d.h. du könntest im ersten Nippel die Koordinaten und im zweiten Nippel z.B. eine Kategorie definieren.

P.S. Ein Null byte ist in der Regel ein \0 bzw. \n kein einfaches 0.

Hoffe das Hilft!
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück