【发布时间】:2017-03-18 21:26:33
【问题描述】:
我正在编写简单的客户端-服务器程序,其中服务器正在侦听所有传入连接并接受它们。一旦接受,客户端将数据(整数)发送到服务器,服务器将整数回显给客户端。这部分工作正常。 此外,客户端在已建立的连接上连续发送数据(使用 while 循环),这就是我遇到“java.io.EOFException”异常的地方。
服务器
监听端口:3344
收到:1 份来自客户
监听端口:3344
客户
输入要发送的数据: 1
服务器回复:1
输入要发送的数据: 2
线程“主”java.io.EOFException 中的异常 在 java.io.ObjectInputStream$BlockDataInputStream.peekByte(ObjectInputStream.java:2626) 在 java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1321) 在 java.io.ObjectInputStream.readObject(ObjectInputStream.java:373) 在 Node.main(Node.java:28)
客户端代码
int serverPort = 3344;
Scanner sc = new Scanner(System.in);
Socket clientSocket = new Socket("localhost", serverPort);
ObjectOutputStream write = new ObjectOutputStream(clientSocket.getOutputStream());
ObjectInputStream read = new ObjectInputStream(clientSocket.getInputStream());
Integer writeData = new Integer(0);
while (true) {
System.out.println("Enter Data to send: ");
writeData = sc.nextInt();
write.writeObject(writeData);
write.flush();
Integer obj = (Integer) read.readObject();
if (obj.intValue() == -1) {
break;
}
System.out.println("Server replied : " + obj.toString());
System.out.println();
}
write.close();
read.close();
clientSocket.close();
服务器代码
while (true) {
System.out.println("listening on port : " + listenPort);
try {
clientSocket = listener.accept();
write = new ObjectOutputStream(clientSocket.getOutputStream());
read = new ObjectInputStream(clientSocket.getInputStream());
int readInt = (Integer) read.readObject();
System.out.println("Received : " + readInt + " from client");
write.writeObject((Object) readInt);
write.flush();
//break;
}
finally {
write.close();
read.close();
clientSocket.close();
//listener.close();
}
【问题讨论】:
-
此时服务器是否还活着并工作?也许它不再响应了。
-
是的。使用服务器控制台输出更新帖子。
标签: java client-server eofexception