OldSchoolHack

Registrieren / Anmelden Deutsch

c++/java problem

icon Thema: c++/java problem

Anmeldungsdatum: Sep 2010

Beiträge: 38

Hi ho OSH community,
ich entwickle gerade zwei Programme, die mit einander kommunizieren,
eines in c++, eines in java.

Der Datenverkehr wird verschlüsselt. Am anfang jedes Pakets steht die Länge des Paketes, diese ist nichr verschlüsselt:

Das andere Programm ließt die Größe(4 Bytes) ein und anschließend das verschlüsselte Paket.

Die Pakete bestehen im Quellcode aus byte/char-Arrays.
In c schreibe ich die größe mittels memcpy in das array:
CPP Code:
  1.  
  2. memcpy(data,&size,sizeof(int));
  3.  
Am ende kommt
TEXT Code:
  1. 12.0.0.0.65.-14.-12.-38.-28.68.2.85.-15.32.-78.-63.
  2.  
raus, die man sieht ist das ganze paket 16 Bytes lang, im Header stehen halt nur 12, so sollte es auch sein.


In Java funktioniert das nicht ganz so gut, dort arbeitet man nicht mit pointern, kann keinen speicher direkt kopieren.
Um dort pakete zu bauen, verwende ich die Klasse:
CPP Code:
  1.  
  2. ByteBuffer buffer = ByteBuffer.allocate(size);
Mit der .putInt Methode schiebe ich einen Integerwert von vorne in das Array.
Raus kommt am ende sowas hier:
TEXT Code:
  1. 0.0.0.12.64.-14.-9.50.-26.68.2.87.-14.32.-78.-62.
  2.  
Auch hier stehen im Header 12 Bytes, alles richtig.

Allerdings erkennt man nun das Problem, der ByteBuffer interpretiert den Integerwert 12 = 0.0.0.12

Beim kopieren in c hingegen 12 = 12.0.0.0

Da beide Programme kommunizieren, würde ich mich gerne für eine der beiden Methoden entscheiden,
problem, ich weiß nicht, warum sie unterschiedlich sind und ich weiß nicht, wie ich die jeweils andere Methoden in der anderen Sprache "schön" implementieren soll.

natürlich könnte ich die Bytes einfach vertauschen, aber das scheint mir nicht wirklich effizient.

Vlt hat ja wer nen Denkanstoß für mich =$

Lg Alex