客户端代码:的ObjectOutputStream不发送数据
try {
Socket socket = new Socket(ip, port);
OutputStream output = socket.getOutputStream();
ObjectOutputStream out = new ObjectOutputStream(output);
InputStream input = socket.getInputStream();
ObjectInputStream in = new ObjectInputStream(input);
out.writeByte(1);
FileHandler fh = (FileHandler) in.readObject();
//processing stuff
out.flush();
out.close();
output.flush();
output.close();
input.close();
in.close();
socket.close();
} catch (Exception e) {
e.printStackTrace();
}
Server代码:
try {
ServerSocket server = new ServerSocket(port);
Socket socket = server.accept();
InputStream input = socket.getInputStream();
ObjectInputStream in = new ObjectInputStream(input);
int type = in.readByte();
//processing stuff (which includes closing the streams and sending FileHandler object)
socket.close();
} catch (Exception e) {
e.printStackTrace();
}
服务器永远不会接收的字节。它只是等待来自客户端的字节,它永远不会来。我不确定它为什么不发送或收到。任何帮助深表感谢。
也不要冲洗或关闭输出。如果你包装一个OutputStream,调用close或者flush或者close关闭它将依次刷新包含的流。您不需要保存对输出或输入的引用。关闭应该放在finally子句中,如果抛出异常,你仍然需要确保close()流发生。 – chubbsondubs 2012-02-01 06:08:46
当我在发送字节后刷新时,服务器会收到连接重置错误。 – Stripies 2012-02-01 06:09:17
@JonMannerberg - 不,它会在你关闭连接时得到。在完成阅读和写作之前,不要关闭它。 – 2012-02-01 06:10:51