在C程序中使用telnet

我正在研究一个机器人自动化项目,我遇到了一个障碍。 要控制机器人,需要通过telnet以无线方式连接它,并通过tcp / ip协议发送命令。 (例如,’Mabc’命令根据左轮速度(a),右轮速度(b)和时间(c)将其向前移动。 我想要做的是在C程序中进行一些计算,然后根据计算值向机器人发送消息。

如何在C程序中通过tcp / ip协议发送命令?

谢谢!

埃里克

你正在寻找sockets。 这是C语言中套接字编程的综合指南 .Telnet也是一个定义良好的协议,虽然我不知道这个机器人是否会使用telnet(这是一个额外的处理开销,对于一个没有太多额外好处的协议机器人控制程序)。 RFC 854详细介绍了Telnet

Expect将允许您与外部程序进行交互,但我不知道有一个期望的C端口。 否则你会在C中找到一个telnet库或使用套接字编程编写自己的库。

我会使用libcurl: http : //curl.haxx.se/libcurl/ 。 它会做你想要的,并处理你真正不想处理的所有telnet goo。

Expect旨在实现这一目标 – 与交互式程序进行对话。 它是用Tcl编写的,用各种命令扩展了Tcl解释器。 Tcl很容易扩展; 它被设计成一个嵌入式脚本语言,直接来自单词go。 主C API使用argv样式的构造将参数传递给Tcl命令,并且非常易于使用。 C API的最佳指南是Ousterhout的原始书籍 ,我花了一个两小时的实验室课程来启动和运行我的第一个嵌入式Tcl解释器。

作为奖励,您还可以获得内置的Tcl interpereter,您可以使用它为您的应用程序添加脚本function。 你可能会发现,如果你有这种倾向,可以在Tcl中实现相当多的function,这样可能会节省你的整体时间。

我会:

  • 编写一些简单的shell脚本,其中包含作为此处文档编写的telnet交互。
  • 使用主目录中的.telnetrc文件来控制telnet会话的各个方面,例如crmod
  • 使用系统调用调用脚本。

这样,您改变与机器人的交互的周转时间将不会涉及必须一直重新编译您的程序。

BTW听起来很有趣。

HTH。

干杯,