鍍金池/ 教程/ Java/ 查看收到的數(shù)據(jù)
Netty 實(shí)現(xiàn) WebSocket 聊天功能
總結(jié)
寫個(gè)時(shí)間客戶端
寫個(gè)丟棄服務(wù)器
問題
開始之前
關(guān)閉你的應(yīng)用
開始
用POJO代替ByteBuf
總結(jié)
架構(gòu)總覽
豐富的緩沖實(shí)現(xiàn)
解決
寫個(gè)應(yīng)答服務(wù)器
I/O API 統(tǒng)一的異步 I/O API
適用快速開發(fā)的高級(jí)組件
處理一個(gè)基于流的傳輸
Netty 實(shí)現(xiàn)聊天功能
基于攔截鏈模式的事件模型
寫個(gè)時(shí)間服務(wù)器
查看收到的數(shù)據(jù)

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

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

http://wiki.jikexueyuan.com/project/netty-4-user-guide/images/1.1.jpg" alt="" />

http://wiki.jikexueyuan.com/project/netty-4-user-guide/images/1.2.jpg" alt="" />

然而我們能說這個(gè)服務(wù)端是正常運(yùn)行了嗎?事實(shí)上我們也不知道,因?yàn)樗且粋€(gè) discard 服務(wù),你根本不可能得到任何的響應(yīng)。為了證明他仍然是在正常工作的,讓我們修改服務(wù)端的程序來打印出他到底接收到了什么。

我們已經(jīng)知道 channelRead() 方法是在數(shù)據(jù)被接收的時(shí)候調(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.這個(gè)低效的循環(huán)事實(shí)上可以簡(jiǎn)化為:System.out.println(in.toString(io.netty.util.CharsetUtil.US_ASCII))

2.或者,你可以在這里調(diào)用 in.release()。

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

http://wiki.jikexueyuan.com/project/netty-4-user-guide/images/1.3.jpg" alt="" />

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

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