Java ObjectOutputStream不发送数据
客户端代码:Java ObjectOutputStream不发送数据,java,sockets,networking,stream,objectoutputstream,Java,Sockets,Networking,Stream,Objectoutputstream,客户端代码: try { Socket socket = new Socket(ip, port); OutputStream output = socket.getOutputStream(); ObjectOutputStream out = new ObjectOutputStream(output); InputStream input = socket.getInputStream();
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();
}
服务器代码:
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();
}
服务器从不接收字节。它只是等待来自客户机的字节,它永远不会出现。我不知道为什么它没有发送或接收。非常感谢您的帮助。如果我不得不猜测,那是因为在您的客户机中,您阻止了.readObject()中的
代码>等待服务器向您发送内容,因此从不刷新输出流,因此。。。没有任何东西被发送
刷新输出流后将读取移动到。如果我不得不猜测,那是因为在客户端中,您在.readObject()中阻塞了代码>等待服务器向您发送内容,因此从不刷新输出流,因此。。。没有任何东西被发送
刷新输出流后,将读取移动到。尝试使用writeObject和readObject方法。还要将整数而不是int写入流。请在继续之前阅读
为了你的问题
问候 尝试使用writeObject和readObject方法。还要将整数而不是int写入流。请在继续之前阅读
为了你的问题
问候 也不要刷新或关闭输出。如果包装一个OutputStream,调用close或flush或close,它将依次刷新包含的流。您不需要保存对输出或输入的引用。Close也应该放在finally子句中。如果抛出异常,您仍然需要确保流的Close()发生。当我在发送字节后刷新时,服务器会收到一个连接重置错误。@JonMannerberg-否,当您关闭连接时会收到该错误。在完成读写之前不要关闭它。也不要刷新或关闭输出。如果包装一个OutputStream,调用close或flush或close,它将依次刷新包含的流。您不需要保存对输出或输入的引用。Close也应该放在finally子句中。如果抛出异常,您仍然需要确保流的Close()发生。当我在发送字节后刷新时,服务器会收到一个连接重置错误。@JonMannerberg-否,当您关闭连接时会收到该错误。在完成阅读和写作之前不要关闭它。