java - 是否有支持 Telnet RFC2217(通过网络连接与 COM 端口通信)的 Java 客户端?

标签 java network-programming serial-port network-protocols telnet

这应该很简单,非常简单,但我很难做到。


问题
我正在寻找一个使用 RFC2217 协议(protocol)进行通信的 Java 开源项目。我发现不乏 Java RFC2217 终端服务器,但我需要一个客户端。如果所有这些人都在编写服务器,则必须有人编写客户端!正确的?我在 java 中找不到


上下文
我们有一个硬件(SeaLINK+16 Ultra)物理连接到十几个串行设备并接受 TCP 网络连接来控制它们。此设备与具有虚拟 COM 端口的服务器联网,我们的应用程序使用这些端口与那十几个设备进行通信。

基本上,我们的服务器最终将网络数据发送到此 SeaLINK 设备,此设备将 TCP 流量转换为 COM 数据,并通过串口将其传输到其连接的串口设备。服务器和 SeaLINK 设备使用 RFC2217 中指定的协议(protocol)进行通信。

需要发送给这些串行设备的命令非常简单(Cisco IOS)。短字符串,如“enable”、“write memory”、“reload”等。

问题是,我们服务器上启用的虚拟 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 - 是否有支持 Telnet RFC2217(通过网络连接与 COM 端口通信)的 Java 客户端?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3167821/

相关文章:

c - free( ) 导致 malloc_error_break

batch-file - PuTTY 命令行自动执行来自文件的串行命令

serial-port - 串行接口(interface)永久拒绝请求

c++ - 使用 std::string 输出

linux - packet mmap发送包格式

node.js - 在 Windows 上运行 NodeJs 串行端口

java - 如何通过服务控制媒体播放器?

java - 将 byte[] 设置为 SQL 准备语句

java - 为什么这个带有有界通配符的 Java 通用代码无法编译?

java - 如何使表格组件中的所有行拉伸(stretch)到相同的高度?