背景:服务器需要支持多种协议的解析,如何解决呢?一开始以为可以通过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
面对服务器需要支持多种协议的情况,通过使用Netty并为不同协议分配独立端口来实现解码和处理的分离,简化了逻辑,提高了后期维护的便利性。每个协议对应一个独立的解编码器,通过线程处理各自端口的数据。参考链接提供了更多实现细节。
订阅专栏 解锁全文
7498





