我使用Socket
从一台服务器发送任务到另一个像这样:如何在写入ObjectOutputStream之后读取套接字响应?
private boolean sendRequest(String address, int port) {
boolean requestComplete = false;
try {
Socket socket = new Socket(address, port);
ObjectOutputStream oos = new ObjectOutputStream(socket.getOutputStream());
oos.writeObject("task_to_complete");
ObjectInputStream ois = new ObjectInputStream(socket.getInputStream());
String msg = (String)ois.readObject();
if(msg.equals("complete")){
requestComplete = true;
}
ois.close();
oos.close();
socket.close();
} catch (Exception e) {
e.printStackTrace();
}
return requestComplete;
}
第二服务器接收任务,像这样:
while (true) {
// wait for connection
Socket socket = serverSocket.accept();
System.out.println("New connection accepted " + socket.getInetAddress() + ":" + socket.getPort());
// retrieve request from server
ObjectInputStream ois = new ObjectInputStream(socket.getInputStream());
String msg = (String) ois.readObject();
switch (msg) {
case "task_to_complete":
// do task 1
break;
}
System.out.println("Task " + msg + " complete.");
// send a message back to client with the result of the task it
// requested
PrintWriter out =
new PrintWriter(socket.getOutputStream(), true);
out.print("complete");
ois.close();
socket.close();
}
但我得到的错误
java.io.EOFException在 java.io.ObjectInputStream $ PeekInputStream.readFully(Unknown Source)
当我尝试从第一台服务器读取消息“完成”时: ObjectInputStream ois = new ObjectInputStream(socket.getInputStream());
。
什么是造成此错误?
这给了我一个“msg”的'NullPointerException'。 – crm