gpt4 book ai didi

java - 串行硬件设备的消息传递解决方案

转载 作者:行者123 更新时间:2023-11-30 05:17:37 25 4
gpt4 key购买 nike

我有一个串行硬件设备,我想与多个应用程序共享,这些应用程序可能驻留在多个网络内或跨越多个网络的不同计算机上。一个关键要求是系统必须支持双向通信,以便客户端/串行设备可以存在于防火墙后面和/或不同的网络上,并且仍然通过中央服务器相互通信(发送和接收)。系统的另一个要求是客户端必须能够确定网关/串口设备是否离线/在线。

该串行设备能够接收数据包并将其发送到无线网络。与串行设备通信的软件是用 Java 编写的,如果可能的话,我希望使其保持 100% Java 解决方案。

我目前正在研究 XMPP,使用 Jive 软件的 Openfire 服务器和 Smack API。通过此解决方案,来自串行设备的数据包通过 XMPP 传送到客户端。同样,任何客户端应用程序都可以通过 Smack API 向串行设备发送数据包。数据包只是字节数组,大小限制为 100 字节左右,因此可以将它们转换为十六进制字符串并作为消息正文中的文本发送。系统应该容忍客户端/串行设备离线,这意味着它们再次可用时会自动重新连接,但如果客户端离线,数据包将被丢弃。数据包必须近乎实时地发送和接收,因此不需要离线传送。安全性应由消息传递系统和提供的客户端 API 提供。

我想听听其他可能的解决方案。我想过使用 JMS,但它似乎有点太重了,我不确定它是否支持了解客户端和/或网关/串行设备是否离线的要求。

最佳答案

Jini 可能适合这份工作。它在可以使用多播的分布式环境中工作得非常好,但它也可以在单播中工作,并且速度相当快。它不仅提供远程服务,还提供远程事件和分布式事务(如果您需要的话)。缺点是它仅适用于 Java。

在我工作的地方,Jini 用于拥有超过 1000 台机器的基础设施,每台机器都提供用于访问连接到机器串行端口的设备的远程服务。

关于java - 串行硬件设备的消息传递解决方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/95485/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com