Использование telnet в программе на C - PullRequest
9 голосов
/ 15 октября 2008

Я работаю над проектом автоматизации роботов и столкнулся с дорожным блоком. Для управления роботом необходимо подключиться к нему по беспроводной связи через telnet и отправлять команды по протоколу tcp / ip. (Например, команда «Mabc» перемещает его вперед на основе скорости левого колеса (a), скорости правого колеса (b) и времени (c)). То, что я пытаюсь сделать, это сделать некоторые вычисления в программе на C, а затем отправить сообщение роботу на основе значения вычисления.

Как отправлять команды по протоколу tcp / ip в программе на C?

Спасибо!

Эрик

Ответы [ 5 ]

17 голосов
/ 15 октября 2008

Вы ищете розетки. Это исчерпывающее руководство по программированию сокетов на языке C. Telnet также является четко определенным протоколом, хотя я не знаю, будет ли этот робот использовать telnet или нет (это дополнительные затраты на обработку протокола, у программы управления роботом много пользы). Telnet подробно описан в RFC 854

7 голосов
/ 15 октября 2008

Ожидайте позволит вам взаимодействовать с внешними программами, но я не знаю, какой порт C ожидает. В противном случае вы найдете библиотеку telnet в C или напишите свою собственную, используя программирование сокетов.

4 голосов
/ 15 октября 2008

Я бы использовал libcurl: http://curl.haxx.se/libcurl/. Он будет делать то, что вы хотите, и обрабатывать все telnet goo, которые вы действительно не хотите обрабатывать.

2 голосов
/ 15 октября 2008

Ожидайте, что был разработан именно для этого - вести беседы с интерактивными программами Он написан на Tcl , расширяя интерпретатор Tcl различными командами. Tcl очень легко расширяется; он был разработан, чтобы быть встроенным языком сценариев с самого начала. Основной C API использует конструкции в стиле argv для передачи параметров командам Tcl и очень прост в использовании. Лучшее руководство по C API - это оригинальная книга Оустерхаута , и мне понадобилось одно двухчасовое лабораторное занятие, чтобы запустить мой первый встроенный интерпретатор Tcl.

В качестве бонуса вы также получаете встроенный интерпретатор Tcl, который вы можете использовать для добавления возможности сценариев в ваше приложение. Вероятно, вы обнаружите, что довольно многое из этого может быть реализовано в Tcl, если вы чувствуете такую ​​склонность, что, вероятно, сэкономит ваше время в целом.

1 голос
/ 15 октября 2008

Я был бы:

  • написание некоторых простых сценариев оболочки, содержащих взаимодействия telnet, написанных как документы здесь.
  • использование файла .telnetrc в вашем домашнем каталоге для управления аспектами вашей сессии telnet, например, crmod
  • вызов скрипта с использованием системных вызовов.

Таким образом, время, необходимое для изменения взаимодействия с роботом, не потребует постоянной перекомпиляции вашей программы.

Кстати, это звучит как веселье.

НТН.

ура

Rob

...