我使用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