我试图掌握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"。
相反,我什么也得不到,所以我会假设我错过了一步,做了一些非常错误的事情,或两者兼而有之,有没有得到答案?
答案 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");