客户代码:
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();
}
服务器永远不会收到该字节。它只是等待来自客户端的字节,它永远不会到来。我不确定为什么它不发送或收到。非常感谢任何帮助。
答案 0 :(得分:3)
如果我不得不猜测,那是因为在你的客户端阻止in.readObject();
等待服务器向你发送一些东西,从而永远不会刷新输出流......所以没有任何东西被发送。
在刷新输出流后,将读取移至。
答案 1 :(得分:1)
尝试使用writeObject和readObject方法。还要在流中写入Integer而不是int。在继续之前阅读this really good lecture。
This is also a good lecture解决您的问题。
问候!