当前位置: 首页 > 知识库问答 >
问题:

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

彭坚壁
2023-03-14

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

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

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

共有1个答案

薛晨
2023-03-14

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

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:管道。addLast(“framer”,新的FixedLength帧解码器(yourFrameLength))或LengthFieldBasedFrameDecoder可获得更多选项。

 类似资料:
  • 问题内容: 我正在使用Java,Selenium和Chrome进行测试自动化。我们的开发人员最近将UI从AngularJS升级到Angular2(不确定是否重要)。但是从那以后,sendKeys在文本字段中输入不完整的字符。这是一个例子: 我也尝试使用executeScript。没用 它可以输入完整的字符,但是表格认为该字段为空。 我还尝试在.sendKeys之前使用.click()并增加睡眠时间

  • 我有一个Netty客户端和一个Netty服务器,并按照主要教程后,为了有一个EchoClient/服务器,我想让它,使我的客户端发送消息到我的服务器,当他第一次连接到它。 下面是我的的方法,这些方法应该解决这个问题: 但是正如你所看到的,教程使用了一个ByteBuf和一个String似乎不起作用! 下面是我如何在我的方法中显示收到的消息: 但是当为使用并在构造函数中初始化它并发送它时,我的服务器不

  • 以下是我的情况: < li >客户端向Netty服务器发送POST请求。 < li>Netty处理POST请求,如果服务器确定需要发送响应,它会将响应发送回客户端。否则,服务器必须向另一个endpoint发送POST请求,获取响应并将该响应发送回客户端。 到目前为止,我已经处理了传入的POST请求。要发送传出的POST请求,这是我在Handler中所做的。 这显然是错误的,因为我正在处理程序中启动

  • 问题内容: 我如何使用getOutputStream方法发送一个strin。正如他们提到的,它只能发送字节。到目前为止,我可以发送一个字节。但不是字符串值。 提前致谢 问题答案: 如何使用PrintWriter: 编辑 :找到了我自己的答案,看到讨论了一个改进,但未列出。这是使用OutputStreamWriter编写字符串的更好方法:

  • 问题内容: 我正在使用Java,Selenium和Chrome进行测试自动化。我们的开发人员最近将UI从AngularJS升级到Angular2(不确定是否重要)。但是从那以后,sendKeys在文本字段中输入不完整的字符。这是一个例子: 我也尝试使用executeScript。没用 它可以输入完整的字符,但表单认为该字段为空。 我还尝试在.sendKeys之前使用.click()并增加睡眠时间。

  • 我有这根弦: Lorem ipsum dolor sit amet,consectetur adipiscing elit,sed do eusmod tempor incidunt ut labore et dolore magna aliqua. Ut enim adminimveniam,quis nostrud eximitation ullamco laboris nisi Ut ali