在C程序中使用telnet

问题描述:

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

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

谢谢!

Erik

您正在寻找套接字。 This is a comprehensive guide to socket programming in C. Telnet也是一个明确的协议,虽然我不知道这个机器人是否会使用telnet(这是一个协议的额外处理开销,对机器人控制程序没有太多额外的好处)。 telnet覆盖详细RFC 854

+2

它们通常不会实现完整的telnet协议,只需将简短的ascii命令发送到端口23即可。 – 2008-10-14 22:05:00

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

我应该是:

  • 写含写成此文件的telnet interractions一些简单的shell脚本。
  • 使用主目录中的.telnetrc文件来控制Telnet会话的各个方面,例如, crmod
  • 使用系统调用来调用脚本。

这样你的周转时间来改变你与机器人的互动将不会涉及到所有的时间重新编译你的程序。

顺便说一句这听起来很有趣。

HTH。

欢呼声,

罗布

Expect是专做正是这一点 - 与举行互动节目的谈话。它写在Tcl,用各种命令扩展Tcl解释器。 Tcl很容易扩展;它被设计成一个嵌入式脚本语言,直到单词go。主C API使用argv风格的构造将参数传递给Tcl命令,并且非常易于使用。 C API的最佳指南是Ousterhout's original book,并且我花了两个小时的实验室课程让我的第一个嵌入式Tcl解释器启动并运行。

作为奖励,您还可以获得一个内置Tcl interpereter,您可以使用它来为应用程序添加脚本功能。如果你觉得如此倾向,你可能会发现它可以在Tcl中实现,所以它可能会为你节省整体时间。

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