Я пишу простую клиент-серверную программу, в которой сервер прослушивает все входящие соединения и принимает их. После принятия клиент отправляет данные (целое число) на сервер, а сервер возвращает целое число клиенту. Эта часть работает нормально. Кроме того, клиент отправляет данные последовательно (используя цикл 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();
}