使用Netty處理多協議的方式

背景:服務器需要支持多種協議的解析,如何解決呢?一開始以爲可以通過netty的解碼器,然後根據不同的協議格式來解析判斷究竟是什麼版本的協議?哪家的協議?但想起來這個邏輯估計會很難完成,而且後期維護和更新會顯得複雜,所以想了另外一個辦法:不同協議使用不同的端口,比如A協議使用1100端口,B協議使用2200端口,這樣就有獨立的解編碼器,後期維護更新就比較方便。

在這裏寫貼上部分代碼,後期再細化這個思路:

public class TCPServer implements Runnable {
    private int port;
    Logger logger= LoggerFactory.getLogger(TCPServer.class);

    public TCPServer(int port){
        this.port=port;
    }

    public void run(){
        EventLoopGroup bossGroup=new NioEventLoopGroup(1);
        EventLoopGroup workGroup=new NioEventLoopGroup();

        try{
            ServerBootstrap serverBootstrap=new ServerBootstrap();
            //serverBootstrap.handler(new LoggingHandler(LogLevel.INFO));
            serverBootstrap.group(bossGroup,workGroup)
                    .channel(NioServerSocketChannel.class).
                    option(ChannelOption.SO_RCVBUF,4096).
                    option(ChannelOption.SO_SNDBUF,4096)
                    .childHandler(new ChannelInitial
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章