Я пытаюсь отправить непечатаемые символы ASCII (коды 128 - 255) через telnet в приложение Ruby с использованием объектов Socket для чтения данных.Отправка непечатаемых кодов ASCII (например, 0x80) через bash и Telnet
Когда я пытаюсь отправить \x80
через telnet, я ожидаю, что Ruby получит строку из 3 байтов: 128 13 10
.
Фактически я получаю строку из 6 байтов: 92 120 56 48 13 10
.
Нужно ли мне что-то менять в отношении того, как telnet отправляет информацию, или как приемник Ruby принимает его? Я прочитал весь жаргон telnet, который я могу понять. Точка в правильном направлении была бы очень оценена.
Я вручную вводим шестнадцатеричный код в telnet, а не через Ruby. Это _accepted_ by Ruby и интерпретируется по-характеру. Я спрашиваю, как ввести специальный символ в telnet, чтобы Ruby понял, что я имею в виду. –
@BradRice: Обычно вы не можете. Но это зависит от того, какой терминал вам нужен. У интеллектуальных терминалов часто есть какая-то боковая консоль или окно, когда вы можете выпустить команду, например, «теперь отправьте этот специальный символ». Но если у вас нет ничего подобного, то the onlu заключается в попытке скопировать вставку его точного символа или строки из текстового блокнота, который может обрабатывать их. Кроме того, вы можете попытаться передать в терминал текстовый файл, который содержит текст со специальными символами, вместо того, чтобы вводить их вручную. Часто это более удобно и повторяемо. Или напишите сценарий для этого или (...) – quetzalcoatl
И под терминалом я подразумеваю «telnet terminal», а не ваше окно Bash/console/etc. Я имею в виду приложение, которое вы используете для установления соединения telnet. Telnet - это имя протокола, и есть много разных клиентов (терминалов), которые его обрабатывают. Например, 'putty' может, и он поддерживает вставку специальных символов (при условии, что вам удастся скопировать их в буфер обмена). – quetzalcoatl