Уже давно хотел в свой tty_term добавить поддержку сокетов: уж очень неудобно пользоваться неткатом в качестве клиента.
Добавил.
Заодно добавил дамп в файл (то, что вводит клиент, предваряется "> ", а то, что получает извне, предваряется "< ").
Тип сокета определяется тупым перебором. Если ничего не годится — аварийное завершение. Можно и сетевые (если пользователь укажет порт), и UNIX-сокеты (если порт не укажет, то "name" будет считаться именем сокета; как обычно, если ввести "\0name", будет подключение к сокету name без физического файла).
Так как во всех моих железяках протокол текстовый, я не заморачивался с расшифровкой бинарных (скажем, вводить числа, а они уже будут передаваться; аналогично полученные данные рисовать в HEX и DEC формате).
Комбинация ncurses и readline дает возможность разделить ввод и вывод (в том же nc совершенно невозможно работать, когда из сокета идет большой поток данных: непонятно, что ты уже ввел), а также иметь историю введенных команд. Возможно, в будущем добавлю поддержку автодополнения (указываешь файл со списком команд, они оттуда считываются и по ним ведется дополнение введенных команд).
Добавил.
Заодно добавил дамп в файл (то, что вводит клиент, предваряется "> ", а то, что получает извне, предваряется "< ").
Тип сокета определяется тупым перебором. Если ничего не годится — аварийное завершение. Можно и сетевые (если пользователь укажет порт), и UNIX-сокеты (если порт не укажет, то "name" будет считаться именем сокета; как обычно, если ввести "\0name", будет подключение к сокету name без физического файла).
Так как во всех моих железяках протокол текстовый, я не заморачивался с расшифровкой бинарных (скажем, вводить числа, а они уже будут передаваться; аналогично полученные данные рисовать в HEX и DEC формате).
Комбинация ncurses и readline дает возможность разделить ввод и вывод (в том же nc совершенно невозможно работать, когда из сокета идет большой поток данных: непонятно, что ты уже ввел), а также иметь историю введенных команд. Возможно, в будущем добавлю поддержку автодополнения (указываешь файл со списком команд, они оттуда считываются и по ним ведется дополнение введенных команд).