2015-11-24 2 views
1

У меня очень простой прослушиватель сокета TCP. Я хочу прекратить получать данные, когда символ null или #.Java TCP socket listener

while ((line = in.readLine()) != null && !line.equals("#")){ 
    tcpData = tcpData + line; 
    } 
server.close(); 

не закрывает розетку в виде потоков кода. Гнездо закрывается только тогда, когда я закрываю Hyperterminal. Что я пропустил?

+0

1. Является ли «#» отправлено сервером? 2. Завершает ли сервер эту строку? 3. Закрывает ли сервер соединение? – Fildor

+2

Не используйте 'readLine', если вы не хотите читать * строку *. –

+0

Что я могу использовать вместо readline? –

ответ

1

Поскольку readLine() возвращает только null в конце потока, что происходит только в сокетах TCP, когда одноранговое соединение закрыло соединение.

... и, очевидно, вы никогда не отправляете линию, состоящую из # плюс терминатор линии.

+0

Данные передатчика удаленного терминала. Например, строка как $ 353323058181636, EV, D, T, 567888.9, + 12C, FFFFE000 #, где $ - символ начала, а # - символ конца. Каждый пакет приходит каждую минуту. В моем случае, когда конец данных заканчивается, необходимо закрыть сокет. –

+0

Итак, вы читаете строки, но не отправляете строки. Поэтому не используйте 'readLine()'. – EJP