Tag: java.lang.Object
Socket Beispiele -> java.util.String split?
by admin on Apr.18, 2009, under Tutorials
Dank des schönen Wetters gibs erst nach längerer Zeit mal wieder einen Blog-Eintrag. Warum wird bei Java Socket Beispielen im Internet, immer alles mögliche in einen String gepackt (z.b. Datum, Namen usw). Dazwischen hat man dann immer diese schönen Trennzeichen wo dann immer gesplittet wird. Kaum eines der Beispiele zeigt, das Sockets auch noch andere Objekte verschicken können außer String
. Da es in Java leider nicht möglich ist, auf die Methoden einer Klasse zu zugreifen, ohne Cast, wenn diese in eine java.lang.Object initialisiert wurde (möglich, aber das entspricht nicht wirklich der Objektorientierung), muss die Klasse sowohl beim Sender als auch beim Empfänger verfügbar sein. Das Down-Casten vom java.lang.Object zu einer Klasse ist nur möglich wenn sich die Klasse sich in der Laufzeit befindet bzw. eingebunden wird. Hier mal ein Beispiel für den Client:
Socket socket = new Socket(host, port);
ObjectOutputStream outputStream = new ObjectOutputStream(socket.getOutputStream());
String hallo = “Hallo”;
outputStream.writeObject(hallo);
MeineKlasse klasse = new MeineKlasse();
outputStream.writeObject(klasse);
outputStream.writeObject(new Date());
outputStream.flush();
outputStream.close();
Der Server dazu sieht zum Beispiel so aus:
ServerSocket server = new ServerSocket(port);
Socket socket = server.accept();
ObjectInputStream inputStream = new ObjectInputStream(socket.getInputStream());
String hallo = (String) inputStream.readObject();
MeineKlasse klasse = (MeineKlasse) inputStream.readObject();
Date date = (Date) inputStream.readObject();
inputStream.close();
Das Casten der Objekte muss in der Reihenfolge passieren in welcher diese abgeschickt wurden.