Netty 4.x 查看收到的數(shù)據(jù)

2018-10-26 09:50 更新

查看收到的數(shù)據(jù)

現(xiàn)在我們已經(jīng)編寫出我們第一個服務(wù)端,我們需要測試一下他是否真的可以運(yùn)行。最簡單的測試方法是用 telnet 命令。例如,你可以在命令行上輸入telnet localhost 8080或者其他類型參數(shù)。

然而我們能說這個服務(wù)端是正常運(yùn)行了嗎?事實上我們也不知道,因為他是一個 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()。

如果你再次運(yùn)行 telnet 命令,你將會看到服務(wù)端打印出了他所接收到的消息。

完整的discard server代碼放在了io.netty.example.discard包下面。

譯者注:翻譯版本的項目源碼見 https://github.com/waylau/netty-4-user-guide-demos 中的com.waylau.netty.demo.discard 包下

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號