2015-07-11 45 views
-1

我试图去与netty握手,我承认我很难做到最简单的事情,我真的找不到教程或任何迄今为止的方式出版材料。Netty 5.0对象发送和接收

等方面问题:

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

论serverhandler类服务器端我添加以下channelRead方法中:

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

我希望这样,我会看到控制台上的单词“Hello”。

相反,我没有得到任何东西,所以我会假设我错过了一步,做了一些非常错误的事情或两者的混合,任何在那里得到了答案?

回答

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