我正在研究用于加密 P2P 架构的低级 UDP 消息传递层,如果有兴趣,您可以阅读有关它的更多信息 on its github page

我已经构建了一个简洁的序列化框架,将 POJO 转换为紧凑的 ByteBuffer,以及使使用对称和非对称加密变得相当轻松的各种库。

我现在正在研究消息传递框架,它利用动态代理来实现与 GWT 的 RPC 机制类似的功能。

我的问题是早期我决定让序列化机制从 ByteBuffers 读取和写入。我现在发现这有几个问题:

  • 在序列化对象之前,您需要知道最大字节缓冲区大小
  • 它们是可变的,这使得它们容易出错
  • 它们与 DatagramPacket 不是特别兼容,并且 DatagramChannels 令人困惑

  • 任何人都可以建议在此框架中实现序列化的替代方法吗?

    最佳答案

    可能值得一看 KryoNet - 它可能符合您的需求,或者您可以看看他们如何在幕后做事。

    顺便说一句,他们确实将 ByteBuffers 用于 TCP 和 UDP 连接。我认为诀窍是从 ByteBuffers 中抽象出来,以便任何客户端代码都可以与 POJO 一起工作。要做到这一点,您显然需要在某处拥有可以将大对象分解为多个缓冲写入的逻辑。

    我认为您实际上仍然需要 ByteBuffers,因为它们非常快,支持各种 native 加速技巧,并且无论喜欢与否,最终您都需要在高吞吐量 IO 环境中处理缓冲......

    10-07 16:50