【发布时间】:2011-03-11 05:11:35
【问题描述】:
这应该很简单,非常简单,但我很难做到。
问题
我正在寻找一个使用 RFC2217 协议进行通信的 Java 开源项目。我发现 Java RFC2217 终端服务器不缺,但我需要一个客户端。如果所有这些人都在编写服务器,那么一定有人编写了客户端!正确的?我只是在java中找不到一个。
上下文
我们有一个硬件 (SeaLINK+16 Ultra),它物理连接到十几个串行设备,并接受 TCP 网络连接来控制它们。此设备与具有虚拟 COM 端口的服务器联网,我们的应用程序使用这些端口与这十几个设备进行通信。
基本上,我们的服务器最终将网络数据发送到此 SeaLINK 设备,此设备将 TCP 流量转换为 COM 数据,并通过串行将其传输到其连接的串行设备。服务器和 SeaLINK 设备使用 RFC2217 中指定的协议进行通信。
需要发送到这些串行设备的命令非常简单(Cisco IOS)。 “启用”、“写入内存”、“重新加载”等短字符串。
问题是,我们服务器上启用的虚拟 COM 端口需要在 Linux 中安装非常麻烦且不是跨平台的驱动程序。另外,我们的整个应用程序都是用 Java 编写的,所以如果我们能找到一个可以“使用 RFC2217”的 Java 网络包,我们就可以立即解决我们的问题,并且我们的应用程序不需要捆绑驱动程序。
总结
我需要做的就是将这些命令“包装”到符合 RFC2217 的 TCP 数据包中。在某个地方应该有一个 java 客户端,你向它提供一个命令字符串,它会打开一个套接字并以符合 RFC2217 的方式传输你的字符。
意思是,我不必在本地安装驱动程序或使用虚拟 COM 端口。我所要做的就是运行以下代码:
RFC2217Client magicJavaClient;
magicJavaClient.setServer("192.168.40.5");
magicJavaClient.setPort(4162);
magicJavaClient.connect();
magicJavaClient.send("enable");
magicJavaClient.send("write memory");
magicJavaClient.close();
哎呀,我什至会满足于在本地创建虚拟 com 端口的东西——只要它都是 java 的。像 COM Redirector 这样的东西正是我所需要的,但它不在 Java 中。提前感谢您的任何建议!
更新
NVTCom 似乎是我正在寻找的基于 java 的 RFC2217 客户端类型,但它的文档记录非常差,几乎无法使用。那里还有其他客户吗?我们甚至会考虑商业解决方案。
【问题讨论】:
标签: java network-programming serial-port network-protocols telnet