vendredi 6 mars 2015

Reusing client socket does not work


Vote count:

0




I have a client-server application. Where the client sends an object and the server sends the same object back, a simple echo server. The code below works fine if I am making a new instance of Client for every new request. However, if I use an existing instance of the client, it gives me a java.io.StreamCorruptedException and java.lang.ClassCastException.


Client



Socket socket = new Socket(hostName, port);
initialized = true;
in = new ObjectInputStream(
new BufferedInputStream(socket.getInputStream()));
out = new ObjectOutputStream(socket.getOutputStream());
out.writeObject(request);
out.flush();
Object object = in.readObject();


Server



ServerSocket serverSocket = new ServerSocket(port);
Socket clientSocket = serverSocket.accept();
new Thread(new ClientWorker(clientSocket)).start();


ClientWorker



public void run() {
try {
ObjectOutputStream out =
new ObjectOutputStream(clientSocket.getOutputStream());

ObjectInputStream in = new ObjectInputStream(
new BufferedInputStream(clientSocket.getInputStream()));

Object inputObject;

while(true) {
while ((inputObject = receiveObject(in)) != null) {
out.writeObject(inputObject);
}

out.flush();
}
} catch (IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}


asked 1 min ago







Reusing client socket does not work

Aucun commentaire:

Enregistrer un commentaire