【发布时间】:2013-12-05 18:24:16
【问题描述】:
有服务器和客户端。客户端连接到服务器并向其发送一个对象。该对象必须返回给客户端。
服务器:
ObjectInputStream inStream = new ObjectInputStream(this.socket.getInputStream());
ObjectOutputStream outStream = new ObjectOutputStream(this.socket.getOutputStream());
while (true){
msg = (Message)inStream.readObject();
.........
outStream.writeObject(msg);
outStream.flush();
当我这样写时,我在 msg = (Message)inStream.readObject();
处得到 java.net.SocketException: socket closed当我试图将它放入这样的循环中时:
while (true){
ObjectInputStream inStream = new ObjectInputStream(this.socket.getInputStream());
ObjectOutputStream outStream = new ObjectOutputStream(this.socket.getOutputStream());
msg = (Message)inStream.readObject();
.........
outStream.writeObject(msg);
outStream.flush();
我得到 java.net.SocketException: Socket is closed 在 ObjectInputStream inStream = new ObjectInputStream(this.socket.getInputStream());
客户:
addr = InetAddress.getByName(IP);
socket = new Socket(addr, PORT);
ObjectOutputStream outStream = new ObjectOutputStream(socket.getOutputStream());
outStream.writeObject(new Message(this.name,"/**//**/"));
outStream.flush();
ObjectInputStream inStream = new ObjectInputStream(socket.getInputStream());
Message answer = (Message)inStream.readObject();
告诉我我做错了什么? 还有其他方法可以让服务器等待来自客户端的一些数据吗? 顺便说一句,对不起我的英语,这不是我的母语。
【问题讨论】:
-
可能在服务器能够写入之前客户端已关闭。一旦应用程序终止了 vm 释放它的所有资源/关闭它的套接字。
-
您的
Socket是如何获得的?是否涉及ServerSocket?因为应该有,我们很乐意看到那部分。
标签: java sockets serialization