国产gaysexchina男同gay,japanrcep老熟妇乱子伦视频,吃奶呻吟打开双腿做受动态图,成人色网站,国产av一区二区三区最新精品

Netty 4.x 寫個應(yīng)答服務(wù)器

2018-10-26 09:50 更新

寫個應(yīng)答服務(wù)器

到目前為止,我們雖然接收到了數(shù)據(jù),但沒有做任何的響應(yīng)。然而一個服務(wù)端通常會對一個請求作出響應(yīng)。讓我們學(xué)習(xí)怎樣在 ECHO 協(xié)議的實現(xiàn)下編寫一個響應(yīng)消息給客戶端,這個協(xié)議針對任何接收的數(shù)據(jù)都會返回一個響應(yīng)。

和 discard server 唯一不同的是把在此之前我們實現(xiàn)的 channelRead() 方法,返回所有的數(shù)據(jù)替代打印接收數(shù)據(jù)到控制臺上的邏輯。因此,需要把 channelRead() 方法修改如下:


    @Override
    public void channelRead(ChannelHandlerContext ctx, Object msg) {
        ctx.write(msg); // (1)
        ctx.flush(); // (2)
    }
  1. ChannelHandlerContext 對象提供了許多操作,使你能夠觸發(fā)各種各樣的 I/O 事件和操作。這里我們調(diào)用了 write(Object) 方法來逐字地把接受到的消息寫入。請注意不同于 DISCARD 的例子我們并沒有釋放接受到的消息,這是因為當(dāng)寫入的時候 Netty 已經(jīng)幫我們釋放了。
  2. ctx.write(Object) 方法不會使消息寫入到通道上,他被緩沖在了內(nèi)部,你需要調(diào)用 ctx.flush() 方法來把緩沖區(qū)中數(shù)據(jù)強行輸出?;蛘吣憧梢杂酶啙嵉?cxt.writeAndFlush(msg) 以達(dá)到同樣的目的。

如果你再一次運行 telnet 命令,你會看到服務(wù)端會發(fā)回一個你已經(jīng)發(fā)送的消息。

完整的echo服務(wù)的代碼放在了 io.netty.example.echo包下面。

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

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

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號