在C程序中使用telnet

9
我正在从事机器人自动化项目,但遇到了障碍。要控制机器人,需要通过 telnet 无线连接并通过 tcp/ip 协议发送命令。(例如,“Mabc” 命令根据左轮速度(a),右轮速度(b)和时间(c)向前移动)。我想做的是在 C 程序中进行一些计算,然后根据计算值向机器人发送消息。
如何在 C 程序中通过 tcp/ip 协议发送命令?
谢谢!
Erik
5个回答

17
你正在寻找套接字。这里有一份关于C语言套接字编程的全面指南:http://www.beej.us/guide/bgnet/。虽然我不知道这个机器人是否会使用telnet这一明确定义的协议(对于机器人控制程序来说,这是一个额外的处理负担,并没有太多的附加好处),但RFC 854详细介绍了Telnet协议:http://www.faqs.org/rfcs/rfc854.html

3
通常他们不会实现完整的 telnet 协议,只是向 23 端口发送短的 ASCII 命令。 - Martin Beckett

7

Expect可以让您与外部程序进行交互,但我不知道是否有C版本的expect。否则,您可以在C中找到一个telnet库或使用socket编程编写自己的库。


4

2
Expect旨在与互动程序进行对话。它是用Tcl编写的,通过各种命令扩展了Tcl解释器。Tcl非常容易扩展;它从一开始就被设计为嵌入式脚本语言。主要的C API使用argv-style结构将参数传递给Tcl命令,并且非常易于使用。最好的C API指南是Ousterhout的原始书籍,我只花了一个两小时的实验室会话就能让我的第一个嵌入式Tcl解释器运行起来。
作为额外的奖励,您还可以获得内置的Tcl解释器,您可以使用它添加脚本功能到您的应用程序中。如果您感兴趣,您可能会发现其中相当多的内容可以用Tcl实现,因此它可能会节省您的时间。

1

我会:

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

这样,更改与机器人的交互的周转时间就不需要一直重新编译程序。

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

希望对你有所帮助。

祝好,

罗布


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接