我是靠谱客的博主 端庄高山,最近开发中收集的这篇文章主要介绍在netty中怎么快速判断设备TCP断开了链接(物理终端断开连接,netty服务器端怎么知道),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

先说一下背景吧,公司开发一款新的终端设备,用的JTT808协议。然后呢,需要一个新的网关。于是找了一下用了Netty+springboot的架构。因为以前做的都是C,C++的,刚转投JAVA门下,遇到了很多问题。

今天要说的问题就是,不使用netty的心跳机制,然后如何判断终端的设备掉线了。

先上结论,复写ChannelHandlerAdapter中的handlerRemoved。

    @Override
    public void handlerRemoved(ChannelHandlerContext ctx) throws Exception{

        // 我这里用了map来保存链接,方便给终端发消息用
    	Map<String, ChannelId> map = ChannelManager.channelIdMap;
	    String mapKey = "";
	    
        // 通过对比channel的id,知道哪个设备掉线了,然后删除
    	for(Map.Entry<String, ChannelId> entry : map.entrySet()){
    		mapKey = entry.getKey();
    	    ChannelId mapValue = entry.getValue();
    	    log.info("客户端{}读取超时,{}", mapKey,mapValue);

    	    if(mapValue  == ctx.channel().id())
    	    {
        	    log.info("成功了{},{}", mapKey,mapValue);
    	    }
    	}
    	
        //这里执行客户端断开连接后的操作
    	log.error("断开了链接");
    	ctx.close();
    	
        if(!mapKey.equals(""))
        {
            map.remove(mapKey);
        }
    }

代码经过试验了,每当有TCP断开连接的时候,都会调用这个函数。所以可以在想要处理的handler中,复写这个函数加上要实现的内容就好了。

最后

以上就是端庄高山为你收集整理的在netty中怎么快速判断设备TCP断开了链接(物理终端断开连接,netty服务器端怎么知道)的全部内容,希望文章能够帮你解决在netty中怎么快速判断设备TCP断开了链接(物理终端断开连接,netty服务器端怎么知道)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(48)

评论列表共有 0 条评论

立即
投稿
返回
顶部