0
  1. 案子:

我有一个发送数据的 TCP 客户端,我想听到来自服务器的数据。所以,在这里,一切都好。

我决定在端口 9876 上创建一个套接字服务器来监听这个设备(使用 Java 8)。我收到的数据很奇怪,当我打印它时就像:“悭悭悭”,但理论上,进来的数据应该是一个十六进制。这是设备发送的包的一个例子(登录):

40407F000431303031313132353239393837000000000000001001C1F06952FDF069529C91110000000000698300000
C0000000000036401014C00030001190A0D04121A1480D60488C5721800000000AF4944445F3231364730325F53205
6312E322E31004944445F3231364730325F482056312E322E31000000DF640D0A

我想以一种简单的方式(如果可能的话,一个类)通过 castel 以近 6 种方法复制到设备(Traccar 服务器应用程序的端口 5086)的连接:

  • 连接
  • 断开
  • 编码
  • 解码
  • 寄包裹
  • 接收包裹

我的目标是用 PHP 复制这种行为。我尝试使用 Websocket/HTTP 协议,结果是无法连接。我听不到设备发出的任何包裹。

所以,其他问题可能是:我如何编写自己的自定义协议(Castel)来将服务器与这些设备连接起来?

我查看了 Traccar 服务器代码,但它非常广泛。我用它证明了该设备并且它可以工作,但我不明白如何(在代码级别)。

  1. 文档
  • 卡斯特通信流程

通讯流程

  • 下载上传协议包格式

下载上传协议包格式

  • 登录包示例 登录包

  • 我用 PHP 做了一个简单的套接字,这就是我听到的 PHP 套接字监听

4

1 回答 1

1

Traccar 服务器包含很多不同的东西,但如果你愿意,你可以只使用协议解析部分。这是 Castel 协议的解码器:

github.com/traccar/.../CastelProtocolDecoder.java

解码器是基于 Netty 的,所以如果你想使用它,你需要实现服务器的其余部分来监听传入的连接。我建议查看 Netty 指南以获取有关如何执行此操作的更多详细信息:

https://netty.io/wiki/user-guide-for-4.x.html

于 2020-10-16T21:34:34.230 回答