天天看點

netty tcp 位元組有序->對象有序

io.netty.handler.codec.serialization.objectdecoder

将bytebuf[]反序列化為java對象。

a decoder which deserializes the received bytebufs into java objects. 

io.netty.handler.codec.serialization.objectencoder

編碼器,将java對象序列化為一個netty的bytebuf對象。

an encoder which serializes a java object into a bytebuf. 

要求傳送的類實作java.io.serializable接口。用法見下。

完整的項目示例見github。

https://github.com/chuchu9293/nettytcpobjordering

bytetomessagedecoder是channelhandler的一個實作類,他可以在處理資料拆分的問題上變得很簡單。

每當有新資料接收的時候,bytetomessagedecoder都會調用decode()方法來處理内部的那個累積緩沖。

decode()方法可以決定當累積緩沖裡沒有足夠資料時可以往out對象裡放任意資料。當有更多的資料被接收了bytetomessagedecoder會再一次調用decode()方法。

如果在decode()方法裡增加了一個對象到out對象裡,這意味着解碼器解碼消息成功。bytetomessagedecoder将會丢棄在累積緩沖裡已經被讀過的資料。請記得你不需要對多條消息調用decode(),bytetomessagedecoder會持續調用decode()直到不放任何資料到out裡。