Hallo,
ich bin neu hier und komme ursprünglich aus der c++ Ecke, habe aber nun auch angefangen, in Java zu programmieren.
Ich habe folgendes Problem:
Wir empfangen über TCP/IP ByteStreams. Diese enthalten einen Header, welcher immer an Anfang des Telegramms vorhanden ist. Ich möchte nun einer Methode nur die Nutzdaten ohne die Headerdaten übergeben.
In C++ kann man ja dazu einfach den Pointer auf das erste Byte der Nutzdaten setzen und diesen dann der Methode übergeben. Wie kann ich so etwas in Java realisieren, da gibt es ja keine Zeiger. Es würde natürlich auch mit System.arraycopy gehen, aber da muss ja ein neues Array angelegt werden und dann kopiert werden, das wollte ich vermeiden.
Weiss jemand eine Lösung?
Hier etwas Code, wie es z.Z. gelöst ist, es fehlt noch der Methodenaufruf:
ich bin neu hier und komme ursprünglich aus der c++ Ecke, habe aber nun auch angefangen, in Java zu programmieren.
Ich habe folgendes Problem:
Wir empfangen über TCP/IP ByteStreams. Diese enthalten einen Header, welcher immer an Anfang des Telegramms vorhanden ist. Ich möchte nun einer Methode nur die Nutzdaten ohne die Headerdaten übergeben.
In C++ kann man ja dazu einfach den Pointer auf das erste Byte der Nutzdaten setzen und diesen dann der Methode übergeben. Wie kann ich so etwas in Java realisieren, da gibt es ja keine Zeiger. Es würde natürlich auch mit System.arraycopy gehen, aber da muss ja ein neues Array angelegt werden und dann kopiert werden, das wollte ich vermeiden.
Weiss jemand eine Lösung?
Hier etwas Code, wie es z.Z. gelöst ist, es fehlt noch der Methodenaufruf:
Code:
private void processSbsTelegram(byte[] data)
{
int len = ((data[0] &0xFF) << 8) + (data[1] &0xFF);
CSbsPartnerId recv = new CSbsPartnerId(data,3);
if (recv.equals(Here))
{
byte[] theData = new byte[len - zwischenschichtHeaderLength];
System.arraycopy(data, zwischenschichtHeaderLength,
theData, 0, len - zwischenschichtHeaderLength);
//TODO: Methode aufrufen
}
}