2011-12-20 36 views
0

所以說我有以下的解碼器...如果客戶端連接到Netty服務器時發生錯誤,會發生什麼情況?

public class MyDecoder extends FrameDecoder1 { 

    @Override 
    protected Object decode(
      ChannelHandlerContext ctx, Channel channel, ChannelBuffer buffer)2 { 

     if (buffer.readableBytes() < 4) { 
      return null; 
     } 

     return buffer.readBytes(4); 
    } 
} 

如果一個客戶端連接,從不發送4個字節會發生什麼?

1-客戶端連接發送3個字節關閉連接。 Netty放棄與該連接相關的所有資源「釋放」的所有資源?

2-客戶端連接發送3個字節不關閉連接並保持打開狀態。另一個客戶端連接並執行相同的事情,並繼續。在這一點上資源是正確的?有沒有一個默認的方式來處理這個問題,還是我需要附加一個讀取超時處理程序或什麼?

謝謝

回答

1

1)是的,只要通道關閉,它將釋放緩衝的字節。 2)看看IdleStateHandler和IdleStateAwareHandler。這些將有助於您在閒置後斷開客戶端連接。

+0

謝謝看起來不錯!我會試試看! – user432024 2011-12-21 15:02:53

相關問題