C
Conrae
Gast
Hallo,
ich habe mir aus Spass an der Sache eine kleine Applikation geschrieben. Um zwei Instanzen der Applikation zu vernetzen, wollte ich zwischen ihnen mittels ObjectOutput-/ObjectInputStream Objekte hin- und herschicken. Doch leider scheint der ObjectInputStream jeweils nur den Inhalt zu lesen, den die jeweilige Instanz in den ObjectOutputStream schiebt.
Schätzungsweise werde ich bei der Verlinkung der einzelnen Streams einen Fehler machen. Hier ist mal mein Code:
Über Hilfe würde ich mich freuen. Und habt Nachsicht, das ist mein erster Gehversuch mit den Sockets.
ich habe mir aus Spass an der Sache eine kleine Applikation geschrieben. Um zwei Instanzen der Applikation zu vernetzen, wollte ich zwischen ihnen mittels ObjectOutput-/ObjectInputStream Objekte hin- und herschicken. Doch leider scheint der ObjectInputStream jeweils nur den Inhalt zu lesen, den die jeweilige Instanz in den ObjectOutputStream schiebt.
Schätzungsweise werde ich bei der Verlinkung der einzelnen Streams einen Fehler machen. Hier ist mal mein Code:
Java:
import java.io.*;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.UnknownHostException;
/**
* Networking class responsible to communicate with other clients.
* @author Patrick
*/
public class Network {
private ServerSocket serverSocket = null;
private Socket clientSocket = null;
private ObjectOutputStream objectOutputStream = null;
private ObjectInputStream objectInputStream = null;
public Network() { // host constructor
try {
serverSocket = new ServerSocket(0);
System.out.println("Waiting for connection on port: " + serverSocket.getLocalPort());
clientSocket = serverSocket.accept();
System.out.println("Incoming connection: " + clientSocket.getInetAddress()
+ "\nEstablishing connection.");
objectOutputStream = new ObjectOutputStream(clientSocket.getOutputStream());
objectOutputStream.flush();
objectInputStream = new ObjectInputStream(new BufferedInputStream(clientSocket.getInputStream()));
} catch (IOException e) {
System.err.println(e.getMessage());
System.exit(1);
}
}
public Network(String address, Integer port) { // client constructor
try {
InetAddress iaddress = InetAddress.getByName(address);
clientSocket = new Socket(iaddress, port);
objectOutputStream = new ObjectOutputStream(clientSocket.getOutputStream());
objectOutputStream.flush();
objectInputStream = new ObjectInputStream(new BufferedInputStream(clientSocket.getInputStream()));
} catch (UnknownHostException e) {
System.err.println(e.getMessage());
System.exit(1);
} catch (IOException e) {
System.err.println(e.getMessage());
System.exit(1);
}
}
public void sendObject(Object o) {
try {
objectOutputStream.reset();
objectOutputStream.writeObject(o);
objectOutputStream.flush();
} catch (IOException e) {
System.err.println(e.getMessage());
System.exit(1);
}
}
public Object receiveObject() {
Object o = null;
try {
o = objectInputStream.readObject();
} catch (IOException e) {
System.err.println(e.getMessage());
System.exit(1);
} catch (ClassNotFoundException e) {
System.err.println(e.getMessage());
System.exit(1);
}
o.getClass();
return o;
}
}
Über Hilfe würde ich mich freuen. Und habt Nachsicht, das ist mein erster Gehversuch mit den Sockets.