netty自定義Decoder用於自定義協議
在使用netty時由於自定義協議的分割符是在資料包體的頭部,netty提供的DelimiterBasedFrameDecoder並不能滿足我們的需求。
自定義的decode如下
package com.llvision.netty.decoder;
import io.netty.buffer.ByteBuf;
import io.netty.buffer.Unpooled;
import io.netty.channel.ChannelHandlerContext;
import io.netty.handler.codec.ByteToMessageDecoder;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.List;
/**
* @author yd
* 2017/04/08
*/
public class CustomFrameDecoder extends ByteToMessageDecoder {
private final Logger logger= LoggerFactory.getLogger(CustomFrameDecoder.class);
private static int HEADER_SIZE = 4;
private final ByteBuf delimiter;
private final int maxFrameLength;
private static ByteBuf buf = Unpooled.buffer();
public CustomFrameDecoder(int maxFrameLength,ByteBuf delimiter ) {
this.delimiter = delimiter;
this.maxFrameLength = maxFrameLength;
}
@Override
protected void decode(ChannelHandlerContext ctx, ByteBuf in, List
但在使用該解碼器用客戶端施加壓力時,可達到1s 2000個的資料併發量。當大於這個量時會方式解析崩潰的問題,猜測是Tcp粘包的問題。也可能是機器效能問題。還請解答
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/4550/viewspace-2807682/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 如何利用 Netty 實現自定義協議通訊?Netty協議
- 基於Netty實現自定義訊息通訊協議(協議設計及解析應用實戰)Netty協議
- Java - Apache Mina 自定義協議通訊JavaApache協議
- 關於自定義 Alert
- 自定義View:自定義屬性(自定義按鈕實現)View
- IE瀏覽器 自定義地址協議的實現瀏覽器協議
- 08.Django自定義模板,自定義標籤和自定義過濾器Django過濾器
- python 協程 自定義互斥鎖Python
- 如何動手實現一個自定義的通訊協議?協議
- day48:django前戲之HTTP協議&自定義web框架DjangoHTTP協議Web框架
- 自定義ImageView完成圓形頭像自定義View
- 基於 Netty 的自定義幀高可靠性讀取方案Netty
- netty系列之:自定義編碼解碼器Netty
- 關於自定義標籤庫
- 自定義VIEWView
- 自定義圓環
- 自定義SnackBar
- 自定義useState
- 自定義_ajax
- 自定義Annotation
- 自定義OrderedMap
- 自定義 Drawable
- 自定義UICollectionViewLayoutUIView
- 自定義UITabBarUItabBar
- 自定義scrollbar
- 自定義Drawable
- 自定義ToastAST
- 自定義吐司
- 自定義表格
- 自定義 GitGit
- tailwind自定義AI
- 自定義 tabBartabBar
- android自定義view(自定義數字鍵盤)AndroidView
- vue自定義全域性元件(或自定義外掛)Vue元件
- android自定義View&自定義ViewGroup(下)AndroidView
- android自定義View&自定義ViewGroup(上)AndroidView
- Android自定義控制元件——自定義屬性Android控制元件
- JMeter 擴充套件外掛實現對自定義協議的支援JMeter套件協議