英文:
How to replicate the Traccar Sever connection to a device (castel protocol by TCP) in a single Java class? (to connect, disconnect encode and decode)
问题
案例:
我有一个TCP客户端,它发送数据,我希望从我的服务器收到数据。所以,在这里,一切都好。
我决定在端口9876上创建一个套接字服务器来监听这个设备(使用Java 8)。我接收到的数据很奇怪,当我打印它时像这样:"慳慳慳",但从理论上讲,接收到的数据应该是十六进制的。这是设备发送的数据包示例(登录):
40407F000431303031313132353239393837000000000000001001C1F06952FDF069529C91110000000000698300000
C0000000000036401014C00030001190A0D04121A1480D60488C5721800000000AF4944445F3231364730325F53205
6312E322E31004944445F3231364730325F482056312E322E31000000DF640D0A
我想以一种简单的方式(如果可能的话,仅使用一个类)复制通过Castel连接到设备的连接,几乎包括以下6个方法:
- 连接
- 断开连接
- 编码
- 解码
- 发送数据包
- 接收数据包
我的目标是使用PHP复制这种行为。我尝试过使用WebSocket/HTTP协议,结果是我无法连接它。我无法从设备那里收到任何数据包。
所以,另一个问题可能是:我如何编写自己的自定义协议(Castel)来连接服务器与这些设备?
我查阅了Traccar服务器的代码,但它非常庞大。我用它测试了设备,它可以工作,但是我无法理解它是如何在代码层面上实现的。
文档:
- Castel通信流程
- 用于下载上传的协议包格式
- 登录包示例
- 我使用PHP创建了一个简单的套接字,这是我收到的内容
英文:
- THE CASE:
I have a TCP client what send a data and I want to hear the data from my server. So, here, everything okay.
I decided make an socket server on port 9876 to listen this device (using Java 8). The data which I receive is weird, when I print it is like: "慳慳慳", but in theory, the data coming should be a hex. This is an example of the package what the device sends (login):
40407F000431303031313132353239393837000000000000001001C1F06952FDF069529C91110000000000698300000
C0000000000036401014C00030001190A0D04121A1480D60488C5721800000000AF4944445F3231364730325F53205
6312E322E31004944445F3231364730325F482056312E322E31000000DF640D0A
I want to replicate in a easy way (one class if its possible) the connection by castel to the device (port 5086 for Traccar server app) in almost 6 methods:
- Connect
- Disconnect
- Encode
- Decode
- Send package
- Receive package
My goal is replicate this behavior with PHP. I tried with Websocket/HTTP protocols and the result is that I can't connect with it. I cant hear any package from the device.
So, other question could be: how I can code my own custom protocol (Castel) to connect server with these devices?
I reviewed the Traccar Server code, but its very extensive. I proved the device with it and it works, but I can't understand how (at the code level).
- Documentation
- Castel communication flow
- Protocol package format for download upload
答案1
得分: 1
以下是 Castel 协议的解码器部分,你可以在 Traccar 服务器中找到很多不同的内容,但如果你只想要协议解析部分的话,可以使用以下代码:
github.com/traccar/.../CastelProtocolDecoder.java
这个解码器是基于 Netty 构建的,所以如果你想使用它,你需要实现服务器的其余部分来监听传入的连接。我建议查阅 Netty 的指南,以获取有关如何实现的更多详细信息:
https://netty.io/wiki/user-guide-for-4.x.html
英文:
Traccar server includes a lot of different things, but you can just take the protocol parsing part if you want. Here's the decoder for the Castel protocol:
github.com/traccar/.../CastelProtocolDecoder.java
The decoder is based on Netty, so if you want to use it, you need to implement the rest of the server to listen to incoming connections. I would recommend checking Netty guide for more details on how to do it:
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论