(Простите, потому что я не очень часто пишу на Java.)
Я пишу клиентское сетевое приложение на Java, и у меня возникла интересная проблема. Каждый вызов readInt () выдает EOFException
. Переменная имеет тип DataInputStream
(инициализируется как: DataInputStream din = new DataInputStream(new BufferedInputStream(sock.getInputStream()));
, где sock
имеет тип Socket
).
Теперь sock.isInputShutdown()
возвращает false
, а socket.isConnected()
возвращает true
. Я предполагаю, что это означает, что у меня есть действительное соединение с другой машиной, к которой я подключаюсь. Я также провел другие проверки, чтобы убедиться, что я правильно подключен к другой машине.
Возможно ли, что DataInputStream
был настроен неправильно? Есть ли какие-то предварительные условия, которые я пропустил?
Любая помощь очень ценится.
@ tofubeer: На самом деле я записал 17 байтов в сокет. Разъем подключен к другой машине, и я жду ввода от этой машины (извините, если это было неясно). Сначала я успешно прочитал из потока (чтобы инициировать рукопожатие), и это сработало просто отлично. Сейчас я проверяю, не искажены ли мои отправленные запросы, но я так не думаю. Кроме того, я попытался прочитать один байт из потока (через read()
), и он вернул -1.