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