gpt4 book ai didi

java - 在Netty中发送不带 "\n"的字符串

转载 作者:行者123 更新时间:2023-12-01 11:20:43 25 4
gpt4 key购买 nike

我有一个用 netty.io 编写的简单套接字客户端,我使用 SimpleChannelInboundHandler 来发送和接收数据。在初始化类中我定义了这个:

pipeline.addLast("framer", new DelimiterBasedFrameDecoder(8192, Delimiters.lineDelimiter()));

但这样我每次都需要在字符串末尾添加“\n”换行符号,但我不需要。没有这个符号我无法发送或接收任何字符串数据。在netty中使用字符串数据而不使用换行符的解决方案是什么?

最佳答案

例如,您可以指定您喜欢的任何分隔符

ByteBuf[] delimiters = new ByteBuf[] {
Unpooled.wrappedBuffer(new byte[] { '\r', '\n' }), // WINDOWS
Unpooled.wrappedBuffer(new byte[] { '\n' }), // UNIX / OSX
Unpooled.wrappedBuffer(new byte[] { '\r' }) // LEGACY MAC
};
pipeline.addLast("framer", new DelimiterBasedFrameDecoder(MAXFRAMELENGTH, delimiters));

这样,如果省略它,就可以去掉\n并用另一个字符替换。

如果您想省略任何分隔符,我认为您可以使用 FixedLengthFrameDecoder :pipeline.addLast("framer", new FixedLengthFrameDecoder(yourFrameLength));LengthFieldBasedFrameDecoder了解更多选项。

关于java - 在Netty中发送不带 "\n"的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31254264/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com