在 C 程序中使用 telnet
Posted
技术标签:
【中文标题】在 C 程序中使用 telnet【英文标题】:Using telnet in a C Program 【发布时间】:2010-09-17 04:49:49 【问题描述】:我正在从事一个机器人自动化项目,但遇到了障碍。要控制机器人,需要通过 telnet 与它进行无线连接,并通过 tcp/ip 协议发送命令。 (例如,“Mabc”命令根据左轮速度 (a)、右轮速度 (b) 和时间 (c) 将其向前移动)。我正在尝试做的是在 C 程序中进行一些计算,然后根据计算的值向机器人发送消息。
如何在C程序中通过tcp/ip协议发送命令?
谢谢!
埃里克
【问题讨论】:
【参考方案1】:我会使用 libcurl:http://curl.haxx.se/libcurl/。它会做你想做的事,并处理所有你不想处理的 telnet goo。
【讨论】:
【参考方案2】:Expect 正是为此而设计的——通过交互式程序进行对话。它是用Tcl 编写的,用各种命令扩展了 Tcl 解释器。 Tcl 很容易扩展;它从一开始就被设计成一种嵌入式脚本语言。主要的 C API 使用 argv 风格的结构将参数传递给 Tcl 命令,并且非常易于使用。 C API 的最佳指南是Ousterhout's original book,我花了两个小时的实验课来启动并运行我的第一个嵌入式 Tcl 解释器。
作为奖励,您还可以获得一个内置的 Tcl 解释器,您可以使用它来为您的应用程序添加脚本功能。如果您愿意,您可能会发现其中相当一部分可以在 Tcl 中实现,因此总体上可能会节省您的时间。
【讨论】:
【参考方案3】:我会:
编写一些简单的 shell 脚本,其中包含按照此处文档编写的 telnet 交互。 使用主目录中的 .telnetrc 文件来控制 telnet 会话的各个方面,例如crmod 使用系统调用调用脚本。这样,您改变与机器人交互的周转时间就不必一直重新编译您的程序。
顺便说一句,这听起来很有趣。
HTH。
干杯,
罗伯
【讨论】:
【参考方案4】:Expect 将允许您与外部程序交互,但我不知道期望的 C 端口。否则你会在 C 中找到一个 telnet 库,或者使用套接字编程编写你自己的库。
【讨论】:
【参考方案5】:您正在寻找套接字。 This is a comprehensive guide to socket programming in C. Telnet 也是一个定义明确的协议,虽然我不知道这个机器人是否会使用 telnet(对于一个不会对机器人控制程序有太多额外好处的协议,这是额外的处理开销)。 Telnet由RFC 854详细介绍
【讨论】:
它们一般不实现完整的 telnet 协议,只是向端口 23 发送短的 ascii 命令。以上是关于在 C 程序中使用 telnet的主要内容,如果未能解决你的问题,请参考以下文章