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

是否有支持Telnet RFC2217(通过网络连接与COM端口通信)的Java客户端?,java,network-programming,serial-port,network-protocols,telnet,Java,Network Programming,Serial Port,Network Protocols,Telnet,这应该很简单,非常简单,但我很难接受 问题 我正在寻找一个java开源项目,它将使用RFC2217协议进行通信。我发现Java RFC2217终端服务器并不短缺,但我需要一个客户端。如果所有这些人都在编写服务器,那么一定有人编写了客户端!对吗?我只是在java中找不到一个 上下文 我们有一块硬件()物理连接到十几个串行设备,并接受TCP网络连接来控制它们。此设备与服务器联网,该服务器具有虚拟COM端口,我们的应用程序使用这些端口与这些设备通信 基本上,我们的服务器最终将网络数据发送到此Sea

这应该很简单,非常简单,但我很难接受


问题
我正在寻找一个java开源项目,它将使用RFC2217协议进行通信。我发现Java RFC2217终端服务器并不短缺,但我需要一个客户端。如果所有这些人都在编写服务器,那么一定有人编写了客户端!对吗?我只是在java中找不到一个


上下文
我们有一块硬件()物理连接到十几个串行设备,并接受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。像这样的东西正是我需要的,但它不是Java语言。提前感谢您的建议

更新
似乎是我正在寻找的基于java的RFC2217客户端类型,但它的文档太少,几乎无法使用。还有其他客户吗?我们甚至会考虑一个商业解决方案。

< P>

< P>每个人都谈论天气,但没有人对此做任何事情。 --马克吐温

我发现自己也在寻找JavaRFC2217客户机库,但没有发现任何有用的东西。所以我决定尝试一下


请查看我的新项目,如果您发现任何错误或希望加入该项目,请通知我。

谢谢!看起来它可能正是我需要的。它的文档很差,但是源代码看起来还不错。我得等到下周回到办公室才能真正测试一下。谢谢。昨天试了一下,结果没用。它抱怨服务器不符合RFC2217,这几乎肯定不是真的。文档和错误处理都很差,所以破译问题的唯一方法是逐步检查代码。问题是什么还不清楚。还有其他java客户端吗?@gmale这是我所知道的唯一一个。我想我看过一些商业电影。您可能希望这样做,至少您得到了支持。@Gmail-您可以始终使用串行端口重定向器,然后使用Javacomm或等效的Java串行端口库与串行端口进行通信。@Romain:这正是我们所做的——我们使用RxTx打开和管理串行连接。串口重定向器和类似的程序的问题在于它们是Windows应用程序,我们只使用基于Unix的系统(RedHat和OS X)。我一直在使用Tibbo,这是一个基于linux的串行端口“模拟器”,但我在安装驱动程序时遇到了很多问题,因为我不是linux专家,我们的应用程序运行在虚拟机上,这使一切变得复杂(我实际上是在问另一个与我在这方面遇到的问题相关的问题)