現(xiàn)在我們已經(jīng)編寫出我們第一個服務(wù)端,我們需要測試一下他是否真的可以運行。最簡單的測試方法是用 telnet 命令。例如,你可以在命令行上輸入telnet localhost 8080
或者其他類型參數(shù)。
然而我們能說這個服務(wù)端是正常運行了嗎?事實上我們也不知道,因為他是一個 discard 服務(wù),你根本不可能得到任何的響應(yīng)。為了證明他仍然是在正常工作的,讓我們修改服務(wù)端的程序來打印出他到底接收到了什么。
我們已經(jīng)知道 channelRead() 方法是在數(shù)據(jù)被接收的時候調(diào)用。讓我們放一些代碼到 DiscardServerHandler 類的 channelRead() 方法。
@Override
public void channelRead(ChannelHandlerContext ctx, Object msg) {
ByteBuf in = (ByteBuf) msg;
try {
while (in.isReadable()) { // (1)
System.out.print((char) in.readByte());
System.out.flush();
}
} finally {
ReferenceCountUtil.release(msg); // (2)
}
}
1.這個低效的循環(huán)事實上可以簡化為:System.out.println(in.toString(io.netty.util.CharsetUtil.US_ASCII))
2.或者,你可以在這里調(diào)用 in.release()。
如果你再次運行 telnet 命令,你將會看到服務(wù)端打印出了他所接收到的消息。
完整的discard server代碼放在了io.netty.example.discard包下面。
譯者注:翻譯版本的項目源碼見 https://github.com/waylau/netty-4-user-guide-demos 中的com.waylau.netty.demo.discard
包下
更多建議: