Netty 5.0 对象发送和接收

Netty 5.0 object send and receive

我正在尝试掌握 netty,我承认我很难用它做最简单的事情,我真的找不到太多教程或任何尚未发布的东西 material.

问题继续:

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

下载了示例 ObjectEcho 示例

我在本地主机上设置了它,当我启动它和 运行 客户端时,我得到以下信息:

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");

在服务器处理程序的服务器端 class 我在 channelRead 方法中添加以下内容:

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

我希望我会因此在控制台上看到 "Hello" 这个词。

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

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

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