我需要为现有协议创建一个客户端。我相信 Netty 会让这变得相对简单,但可以做一些入门帮助。
该协议使用基于连接的方法,但在 UDP 之上分层,实际消息位于传输信封内,无序/慢/丢失数据包、会话编号等都是客户端的工作。
在netty中创建管道和帧解码器等以实现这一目标的最佳方法是什么。我以前只以非常基本的方式使用过netty - 所以任何建议都会非常受欢迎。
谢谢!
詹姆士
听起来很痛苦。我是一个普通的netty用户,但我不会在Netty中实现这样的协议(不是反对netty,但它在其他地方实现),至少,你描述它的方式。在你走这条路之前,我会看一下JGroups,它实现了一个“可靠的 UDP”堆栈,它具有你概述的所有传输功能。
我的第一次尝试(如果我在荒岛上)会是这样的:
下游
sendMessage
--> MessageSplitHandler
--> MessageFragmentBufferHandler
RetransmitRequester -->
在哪里:
上游的
这将或多或少与下游相反。
MessageFragmentDecoder <--
MessageFragmentBuffer <--
MessageReAssember <--
onMessage
我认为这是一般的想法,但那里可能有 200-300 个角落案例......