Убить поток, который ожидает вывода сокета - PullRequest
1 голос
/ 15 декабря 2010

эй Как часть проекта, я должен был написать небольшой IRC-клиент для встраивания в него.Все работает хорошо до тех пор, пока программа не будет закрыта, а поток, считывающий ввод с IRC-канала, ожидает большего ввода и никогда не умирает.

while(((inBuffer=in.readLine())!=null)&&(die==false))

inBuffer - просто строка, а in - буферизованный читатель на сокете,переменная die является логическим значением, и я подумал, что я могу установить для него значение true, и оно выпадет из потока.Проблема в том, что inBuffer = in.readLine () "сидит там, пока не получит другую строку.
Может кто-нибудь дать мне руку?

Ответы [ 4 ]

4 голосов
/ 15 декабря 2010

Закройте поток in, readLine() должен затем немедленно вернуть null.

0 голосов
/ 22 августа 2017

Отключите разъем для ввода. Это доставит null к вызову readLine() и завершит цикл.

0 голосов
/ 15 декабря 2010

Вы можете установить тайм-аут для сокета, и если вы получите исключение тайм-аута, вы можете опросить флаг прерывания. Если не установлено, попробуйте еще раз прочитать.

0 голосов
/ 15 декабря 2010

забыл, что в bufferedReader был метод "ready ()" для проверки наличия в буфере чего-либо.проверка этого сделала свое дело.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...