dart - 如何解码从 netty 服务器发送的对象并将对象编码到 Dart 中的 netty 服务器

标签 dart flutter netty

我做了一个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/

相关文章:

java - 管道中的条件执行处理程序

dart - 如何向 Dart 聚合物类添加有效的默认构造函数?

dart - 路径包应该在项目内容内吗?

flutter - 如何在Dart中启用断言?

java - 在两个网络 channel 之间传播背压

java - gRPC-java 服务器在负载下处理请求和发送响应的延迟

reactjs - Flutter (Dart) 中的 RSA 加密

firebase - 每台设备 Flutter 一个账号

flutter - 如何使用标题调用http-get api?

dart - 每 5 分钟或定期刷新 Flutter Text 小部件内容