我做了一个question to send/receive from netty server to flutter client已经,但我已经成功地创建了连接。然而,我的新问题是从 netty 服务器发送的数据是一个字节数组(无论如何我相信)而且我似乎无法弄清楚如何将字节数组解码为对象。我仍然想让我原来的问题得到回答,因为答案可能是比我现在正在做的更好的方法。我将如何解密从 netty 服务器 ( code here ) 发送的字节数组并编码字节数组? (我正在为 netty 使用 ObjectEncoder 和 ObjectDecoder)
最佳答案
netty 有不同的编解码器来序列化数据。默认的 ObjectEncoder
似乎序列化一个包含 java 类 uid 的 header ,然后附加一个普通的 java 对象序列化。您不太可能想要在 Dart 中实现对应的对象。
您需要找到可以在 netty 和 Dart 中生成/解析的数据表示。在一种极端情况下,您可以使用 netty ByteBuf
。 netty 如何序列化为 ByteBuf
将非常清楚,您可以在 Dart 端使用 ByteData
模拟它。在另一个极端,你可能几乎不使用 netty 的序列化。您可以将 Java 对象编码为 utf8 JSON 字符串,发送它,然后在 dart 端简单地解码 utf8 和 json。当然,这不会为您提供紧凑的线路表示。如果您想要 Java 和 Dart 中可用的紧凑表示,请考虑 protobuf。
如果您要使用两种不同语言的两个系统进行互操作,您需要负责它们如何进行序列化/反序列化。使用 netty 的 ObjectEncoder
似乎是个坏主意,因为它过于依赖 Java 的内部对象序列化,而 Dart 端没有对应的序列化。
关于dart - 如何解码从 netty 服务器发送的对象并将对象编码到 Dart 中的 netty 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55718193/