java - StringEncoder是否随机分割一个极长的字符串?

标签 java netty

我正在尝试使用 GSON 发送一些带有 RCS 公钥的 JSON 字符串。每当字符串传输到客户端时,它就会被分割。

目前我只有这些编码器(它们基本上是带有一些额外功能的字符串编码器)

我是否需要任何额外的编码器或解码器将字符串连接在一起,还是需要手动编码?如果我这样做,有关于如何做的任何解释吗?

JSON 字符串的示例如下:https://pastebin.com/UkDGKHya 公钥是唯一的,每次发送数据包时都会生成,但仅在注册客户端时发送一次。

服务器:

                        ch.pipeline().addLast("stringDecoder", new EncryptedGSONObjectDecoder(CharsetUtil.UTF_8, keyFinder));

                        ch.pipeline().addLast("stringEncoder", new EncryptedGSONObjectEncoder(CharsetUtil.UTF_8, keyFinder));

                        ch.pipeline().addLast(processingHandler);

客户:

                    ch.pipeline().addLast("readTimeoutHandler", new ReadTimeoutHandler(15));

                    ch.pipeline().addLast("stringDecoder",new EncryptedGSONObjectDecoder(CharsetUtil.UTF_8, Client.this));

                    ch.pipeline().addLast("stringEncoder", new EncryptedGSONObjectEncoder(CharsetUtil.UTF_8, Client.this));

                    ch.pipeline().addLast(clientHandler);

最佳答案

我只需添加一个 LineBasedFrameDecoder 并在编码时在字符串末尾添加“\n\r”

关于java - StringEncoder是否随机分割一个极长的字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58567634/

相关文章:

java - Hbase:数据未按照关键命名规则划分为区域

java - quarkus 应用程序中找不到camel-twitter 组件

java - JUnit 5 中的 TestName 规则等效于什么?

java - 如何将接收到的数据转换为输入流和输出流

clojure - 从数组的中间组成一个 Buffy 缓冲区并找出它消耗了多少

java - 静态动画系统

java - Android - 使用 java 对象转换 API JSON 结果以设置不同的设计

java - 有什么方法可以在netty中获取端口信息吗?

java - Netty-NioWorker池和工作线程池的关系

java - 在JAVA中通过不可靠的网络发送消息