2015-07-11 89 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");