Hallo Community,
nach über einem Jahr wage ich mich endlich wieder an Java heran.
Um ehrlich zu sein, ich habe wieder die Arbeit an dem Projekt aufgenommen an dem ich damals scheiterte. Es ging darum Daten zwischen einem Server und einem Java Client hin- und herzuschicken.
Das Problem dabei war, dass der Server mit unsigned long (32 bit) und little endian arbeitet.
Nun der Server arbeitet nach wie vor nach dem gleichen Prinzip, doch 2 Semester Studium haben mich erstaunlicherweise soweit gebracht, das der Empfang von Daten des Servers nun problemlos und vorallem auf Anhieb geklappt hat - auch wenn ich im Studium nichts mit Java zu tun hatte.
Der Datenversand läuft immer auf die gleiche Art und Weise ab.
Ich frage 4 byte vom Server ab, die mir (little Endian) mitteilen, wie groß die folgende binärkodierte Nachricht sein wird. Das klappt problemlos.
Zum Testen habe ich erstmal alles in der main() Methode stehen und das sieht so aus
Meine Frage bezieht sich nun auf das Senden. Wenn ich meine Nachricht kodiert habe, kann ich ihre Länge mit String.length() abfragen. Nun müsste ich den Schritt
"rückwärts" machen, und da komme ich nicht weiter.
Bin für alle Tipps offen,
grüße Frank
nach über einem Jahr wage ich mich endlich wieder an Java heran.
Um ehrlich zu sein, ich habe wieder die Arbeit an dem Projekt aufgenommen an dem ich damals scheiterte. Es ging darum Daten zwischen einem Server und einem Java Client hin- und herzuschicken.
Das Problem dabei war, dass der Server mit unsigned long (32 bit) und little endian arbeitet.
Nun der Server arbeitet nach wie vor nach dem gleichen Prinzip, doch 2 Semester Studium haben mich erstaunlicherweise soweit gebracht, das der Empfang von Daten des Servers nun problemlos und vorallem auf Anhieb geklappt hat - auch wenn ich im Studium nichts mit Java zu tun hatte.
Der Datenversand läuft immer auf die gleiche Art und Weise ab.
Ich frage 4 byte vom Server ab, die mir (little Endian) mitteilen, wie groß die folgende binärkodierte Nachricht sein wird. Das klappt problemlos.
Zum Testen habe ich erstmal alles in der main() Methode stehen und das sieht so aus
Java:
public static void main(String[] args) throws UnknownHostException, IOException {
Socket socket;
PrintWriter out = null;
BufferedReader in = null;
socket = new Socket("178.63.14.142", 5000);
in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
out = new PrintWriter(socket.getOutputStream(), true);
int c1 = in.read();
int c2 = in.read();
int c3 = in.read();
int c4 = in.read();
int length = (c4 << 32) + (c3 << 16) + (c2 << 8) + c1;
String handshake = new String();
for(int i = 0; i < length; ++i) {
handshake += (char) in.read();
}
System.out.println(handshake);
}
Meine Frage bezieht sich nun auf das Senden. Wenn ich meine Nachricht kodiert habe, kann ich ihre Länge mit String.length() abfragen. Nun müsste ich den Schritt
Java:
int length = (c4 << 32) + (c3 << 16) + (c2 << 8) + c1;
Bin für alle Tipps offen,
grüße Frank