Посылает установку команды к беспроводному маршрутизатору TP-LINK через соединение телнета:Невозможно прочитать разрыв линии/возврат каретки от ответа сокета
Trying 1.2.3.4...
Connected to 1.2.3.4.
Escape character is '^]'.
*HELLO*$$$
CMD
factory RESET
factory RESET
Set Factory Defaults
<4.00> set sys autoconn 0
set sys autoconn 0
AOK
<4.00>
...
У меня есть PHP-код, который выполняет отправку команд и получает ответ с использованием гнезд:
socket_write($socket, "factory RESET\r"); // send command
$response = socket_read($socket, 256); // get response
PHP работает нормально. Переменная $response
содержит:
factory RESET
Set Factory Defaults
Но с помощью Java у меня есть проблемы. Используя объект BufferedReader
для чтения ответа, я могу получить содержимое первой строки. но я не могу получить следующие строки:
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
// ...
bw.write("factory RESET");
bw.newLine();
bw.flush();
// ...
StringBuilder sb = new StringBuilder();
String s;
while ((s = br.readLine()) != null) {
sb.append(s);
}
я могу получить первое содержимое строки, а второе чтение не продолжить и не вызывают исключение ... Если я использую функцию read
, только возвращается первая строка:
char[] buffer = new char[256];
br.read(buffer, 0, 256);
String response = new String(buffer); // response is "factory RESET"
В чем проблема?
Цистерны! Я удалил вызов '' '' 'newLine()' '' метод и команду chave, добавляя команду '' '\ r \ n''''. Работает!! –
Это только часть его. Не чтение до конца потока - главная проблема здесь. – EJP