1

我正在 VB.net 中编写一个基于 GUI 的应用程序,它通过 telnet 与 LambdaMOO 服务器对话,发送命令以显示对象层次结构,然后解析输出并创建对象层次结构的可视化表示。

所以我的问题是:.NET 是否有某种“telnet 客户端”类来简化数据的发送和接收,还是我必须使用套接字 API 编写自己的?

Mono有这样的东西吗?

除非有一个简单的解决方案,否则是否有人有一个很好的教程可以指向 VB.net 中的 telnet 客户端编程?

4

7 回答 7

2

好的,我有一个类似的问题,忽略了所有的安全问题等,想从 VB 发起的连接到远程设备的 TELNET 并做一些事情。我同意整个谈判过程是一件地狱般的事情,但是一旦你解决了它,它实际上很容易实现。我决定不停止,因为我一直在阅读那些说如果您可以将 1 和 0 写入/从网络流中读取和读取 1 和 0 显然可以完成的事情。

下面链接中的代码将启动连接并让您通过 TELNET 实际交换明文信息。给定发送用户名和密码组合的示例,显示了如何读取和写入连接。

大提示 - 最初有一个不错的大文本框或其他东西来捕获进入缓冲区的所有内容(变量 returndata)。这将帮助您诊断问题。还要在我的博客上查看如何在文本框不闪烁的情况下做到这一点。一旦你完成了所有这些并且你知道你的脚本是可靠的,关闭任何屏幕更新,它会快速通过而不是花费时间。

为真正肮脏的代码和蹩脚的网站布局道歉。

http://myhead-online.blogspot.com/2009/05/vb-net2008-express-telnet-to-sun.html

于 2010-04-16T15:10:47.747 回答
1

telnet 协议基本上就是普通的TCP 协议,有一堆你可能不需要实现的可选的东西。因此,您将打开一个套接字并开始使用套接字流接口发送和接收数据。

尝试使用常规的套接字 API,您可能会发现它非常简单。

于 2009-09-28T06:01:13.917 回答
1

只是一个建议。您可以尝试对您的 vb 应用程序进行编程,以批处理模式执行现有的 telnet 应用程序。

这是供您参考的链接。请参阅 7.3 在批处理文件和脚本中使用 Plink。希望能帮助到你。

于 2009-09-28T06:19:50.667 回答
0

您可以使用任意数量的库之一。这是一个图书馆:

关联

对于其他人,请尝试搜索以下内容:library telnet mud .NET

最后,随时有许多开源 MUD/MOO/MUSH 项目开放,他们愿意分享想法并寻找帮助项目的人。

于 2009-09-28T06:29:45.950 回答
0

我用 telnet 进行了试验。您必须结合使用诸如wireshark 之类的工具来确定需要启动哪些命令。我确实发现与我的 unix box 进行通信是一个很大的挑战。一方面,您必须了解您的 telnet 指令。您可能会发现很难确定应用程序的状态 - 是否先天登录。您必须为此制定自己的逻辑。

您必须做的另一件事是将 telnet 返回的字节解析为命令或指令数据,即您必须知道收到的字节是指令还是它试图发送给您的其他东西。是一个可以派上用场的参考。

首先,我建议您开始使用 wireshark 工具,并手动以及通过应用程序来回发送通信。

于 2009-09-28T06:40:50.280 回答
0

您可以查看Expect 命令 ,这是一个可编写脚本的解决方案,用于在远程机器上运行 telnet、ftp 等。然后,您可以编写期望连接和检索数据的脚本。

这将消除管理套接字和协议的所有复杂性。

于 2009-09-28T08:38:27.140 回答
0

从 LambdaMOO 的角度来看,如果您具有向导访问权限或与具有此权限的人成为朋友,您可以让 MOO 通过您可能更容易使用的另一种协议(例如 HTTP)为您提供数据。您所需要的只是 MOO 上的一个对象,其中设置了 do_login_command() 来处理请求,然后使用 listen() 内置函数让该对象在给定端口上侦听。只要协议不需要任何复杂的 SSL,在 MOO 端编写代码就相当容易。因此,如果 VB.net 更容易处理 HTTP 等,这可能是值得的。

于 2011-07-03T20:00:59.243 回答