Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Netty能否在邮件中拆分字段?_Java_Netty - Fatal编程技术网

Java Netty能否在邮件中拆分字段?

Java Netty能否在邮件中拆分字段?,java,netty,Java,Netty,Netty可以将网络数据包拆分为单独的消息,但它可以拆分消息中的字段吗 message delimeter = "\r\n" field delimiter = "," example network packet = "A,B,C\r\nD,E,F\r\n" 示例代码: val delimiterDecoder = new DelimiterBasedFrameDecoder(Integer.MAX_VALUE, Delimiters.lineDelimiter().apply(0))

Netty可以将网络数据包拆分为单独的消息,但它可以拆分消息中的字段吗

message delimeter = "\r\n"
field delimiter = ","

example network packet = "A,B,C\r\nD,E,F\r\n"
示例代码:

val delimiterDecoder = new DelimiterBasedFrameDecoder(Integer.MAX_VALUE, Delimiters.lineDelimiter().apply(0))

val bootstrap = new Bootstrap

bootstrap.group(new OioEventLoopGroup())
  .channel(classOf[OioSocketChannel])
  .handler(new ChannelInitializer[SocketChannel]() {

  override def initChannel(channel: SocketChannel): Unit = {

    channel.pipeline().addLast(delimiterDecoder)

    channel.pipeline().addLast(new StringDecoder(CharsetUtil.US_ASCII))

    channel.pipeline().addLast(new SimpleChannelInboundHandler[String] {

      override def messageReceived(channelHandlerContext: ChannelHandlerContext, message: String): Unit = {

        // Can Netty do this instead of using Guava?
        val message = Splitter.on(',').split(buffer).iterator()

      }
    })
  }
})

简单的回答是不。。。您可以做的是添加两个DelimiterBaseFrameDecoder解码器。。第一个拆分在“\r\n”上,第二个拆分在“,”上。

Netty甚至不知道消息是什么,更不用说消息中的字段了。@EJP帧比消息更好。建议的方法的问题是应用程序级处理过于复杂。考虑到这一点,我接受了你的回答。