Netty 如何处理多个自定义协议?

2019-10-31 15:10:29 +08:00
 Uyuhz

我们的服务器目前只支持一种,协议由 GPS 设备厂商提供,但是由于对方这块业务不做了,所以准备对接其他厂家(协议大概率是对方提供而非我们制定)。

搜索了下,大概有 2 种:
1.一个端口处理多个协议,在 decoder 里根据协议头不同,分别解析
2.多个端口处理,创建多个 nettyserver 实例用不同端口隔离不同协议

所以在不更改原有协议的,并且增加多个自定义协议(后续也许还有)的情况下,怎样更好点?
有没有做过类似需求的大佬分享下更好的办法

3782 次点击
所在节点    Java
6 条回复
xkzhangsan
2019-11-03 09:12:03 +08:00
可以在根据协议类型设置对应协议处理,可以参考 dubbo 多协议的处理。
Huayx9
2019-12-24 14:33:12 +08:00
jt808 交流一下?
Uyuhz
2019-12-24 16:47:04 +08:00
@Huayx9 啥意思...
tairan2006
2019-12-27 11:15:38 +08:00
楼主啥思路,我这边做物联网关,协议乱七八糟的,甚至还有 modbus 之类的…如果用同一个端口,能不能正确解析协议也是一个问题。

本来想用 go 写的,这就比较简单了,可惜 go 语言的生态不行,很多工业协议都没有成熟的类库,额外工作量太大了。
Uyuhz
2019-12-27 13:18:54 +08:00
@tairan2006 go 我不太了解,我是用的 JAVA 的 Netty。感觉一个端口不太方便,最后还是用不同端口去隔离开来解析的。目前有两个协议,一个是 JT808 改的协议,一个是厂家自定义的协议。

之前 1L 说的参考 dubbo 多协议处理,我去看了下源码,实在没看懂。
tairan2006
2019-12-27 14:35:56 +08:00
@Uyuhz 嗯,我想也是…还是多端口隔离比较简单。go 写起来很简单,各服务之间通信也很简单,问题在于这块的生态不行。Java 这边成熟的库多得多。不过据我观察,最多的还是 c 和.net 的库,工控界更喜欢这些…

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/614869

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX