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協議
- 關於自定義 Alert
- python 協程 自定義互斥鎖Python
- Vue——關於自定義元件Vue元件
- netty系列之:自定義編碼解碼器Netty
- android自定義view(自定義數字鍵盤)AndroidView
- day48:django前戲之HTTP協議&自定義web框架DjangoHTTP協議Web框架
- 如何動手實現一個自定義的通訊協議?協議
- 自定義VIEWView
- 自定義SnackBar
- 自定義_ajax
- 自定義 Anaconda
- 自定義ClassLoader
- 自定義QTimeEditQT
- 自定義 tabBartabBar
- tailwind自定義AI
- 自定義 GitGit
- 自定義元件元件
- 自定義表格
- 自定義LinkedList
- 自定義useState
- Netty原始碼分析之自定義編解碼器Netty原始碼
- vue自定義全域性元件(或自定義外掛)Vue元件
- 自定義View實用小技巧View
- 用mysqlslap壓測自定義sqlMySql
- JMeter 擴充套件外掛實現對自定義協議的支援JMeter套件協議
- 4. 自定義控制元件(4) --- 自定義屬性控制元件
- Android 自定義View:深入理解自定義屬性(七)AndroidView
- Netty中自定義事件處理程式和監聽器Netty事件
- 關於RecyclerView.ItemDecoration的自定義View
- MySQL自定義排序MySql排序
- JavaScript自定義事件JavaScript事件
- Maven 自定義archeTypeMaven
- SpringBoot 自定義 starterSpring Boot
- 自定義的PopupWindow
- 自定義元件——TitleView元件View
- 自定義目錄