Из прочтения нескольких вопросов и ответов здесь кажется, что поток telnet никогда не закрывается. Использование DataAvailable () не вернется.
Я унаследовал некоторый код, выполнение которого заняло очень много времени, и мы подумали, что проблема заключается в сервере telnet. Однако существует байт [32757], в котором код пытается сохранить ответ сервера telnet.
Что-то вроде следующего:
Byte byteArray[] = new Byte[32757];
TcpClient sock = new TcpClient();
sock.GetStream().read(byteArray, 0 byteArray.length);
Если нет 32757 байт или более, я предполагаю, что этот код ожидает, пока не будет отправлено достаточно пустых пакетов, чтобы составить размер байтового массива. Это правильно?
Есть ли способ проверить, завершил ли сервер telnet отправку всего, что ему нужно? На каждой «странице» сеанса telnet нет видимых завершающих символов или строк.
Я думал, что способ исправить этот код - это прочитать несколько байтов за раз, добавить это в строку, проверить строку на наличие завершающего символа или набора символов и вернуть, если найден. В противном случае, прочитайте больше байтов, добавьте это к строке и проверьте снова.
Предложения