在 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的主要内容,如果未能解决你的问题,请参考以下文章

telnet命令不能使用怎么办

使用 telnet C 使用哪个 IP 连接到两台不同的计算机

telnet服务怎么开启

telnet 工具

如何开启telnet服务

telnet命令使用介绍