Netty 5.0对象发送和接收

时间:2015-07-11 22:30:09

标签: object serialization netty

我试图掌握netty并且我承认我很难用它做最简单的事情,我真的找不到教程或任何已发表材料的方式。

关于这个问题:

我已从http://netty.io/5.0/xref/io/netty/example/objectecho/package-summary.html

下载了示例ObjectEcho示例

我已将它设置在localhost上,当我启动它并运行客户端时,我得到以下内容:

Jul 11, 2015 11:21:34 PM io.netty.handler.logging.LoggingHandler channelRead
INFO: [id: 0x3b3ab260, /0:0:0:0:0:0:0:0:8007] RECEIVED: [id: 0x1f7374e8,       /127.0.0.1:49196 => /127.0.0.1:8007]

很好,接下来我试图从客户端发送一个字符串,如下所示:

//开始连接尝试。

 b.connect(HOST, PORT).sync().channel().closeFuture().sync();

 b.connect().channel().write("Hello");

在serverhandler类的服务器端,我在channelRead方法中添加以下内容:

  if(msg instanceof String){
      ctx.write((String)msg);
      System.out.println((String)msg);
      }

我希望我能在控制台上看到" Hello"。

相反,我什么也得不到,所以我会假设我错过了一步,做了一些非常错误的事情,或两者兼而有之,有没有得到答案?

1 个答案:

答案 0 :(得分:1)

在你的channelRead中,msg应该是ByteBuffer,而不是String。你应该这样做:

ByteBuf buf = (ByteBuf)msg;
byte[] req = new byte[buf.readableBytes()];
buf.readBytes(req);
String body = new String(req, "UTF-8");