src/main/java/com/ard/utils/netty/tcp/ClientHandler.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/ard/utils/netty/tcp/ClientInitialize.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/main/java/com/ard/utils/netty/tcp/ClientHandler.java
@@ -8,6 +8,7 @@ import com.ard.utils.util.GisUtils; import com.ard.utils.mqtt.MqttProducer; import io.netty.buffer.ByteBuf; import io.netty.channel.Channel; import io.netty.channel.ChannelHandlerContext; import io.netty.channel.ChannelId; import io.netty.channel.SimpleChannelInboundHandler; @@ -16,6 +17,7 @@ import javax.xml.bind.DatatypeConverter; import java.net.InetSocketAddress; import java.net.SocketAddress; import java.text.SimpleDateFormat; import java.util.*; import java.util.concurrent.ScheduledFuture; @@ -61,7 +63,7 @@ int port = ipSocket.getPort(); String host = ipSocket.getHostString(); log.error("与设备" + host + ":" + port + "连接断开!"); ArdEquipRadar ardEquipRadar = ClientInitialize.tureConnectMap.get(id); ArdEquipRadar ardEquipRadar = ClientInitialize.tureConnectMap.get(host+ ":" + port); // 连接断开后的最后处理 ctx.pipeline().remove(this); ctx.deregister(); @@ -82,8 +84,10 @@ */ @Override public void channelRead0(ChannelHandlerContext ctx, ByteBuf msg) throws Exception { ChannelId id = ctx.channel().id(); ArdEquipRadar ardEquipRadar = ClientInitialize.tureConnectMap.get(id); InetSocketAddress ipSocket = (InetSocketAddress) ctx.channel().remoteAddress(); int port = ipSocket.getPort(); String host = ipSocket.getHostString(); ArdEquipRadar ardEquipRadar = ClientInitialize.tureConnectMap.get(host+":"+port); // 处理接收到的消息 byte[] byteArray = new byte[msg.readableBytes()]; msg.getBytes(msg.readerIndex(), byteArray); src/main/java/com/ard/utils/netty/tcp/ClientInitialize.java
@@ -45,7 +45,7 @@ private Bootstrap bootstrap; public static CopyOnWriteArraySet<ArdEquipRadar> falseConnectSet = new CopyOnWriteArraySet(); public static ConcurrentHashMap<ChannelId, ArdEquipRadar> tureConnectMap = new ConcurrentHashMap(); public static ConcurrentHashMap<String, ArdEquipRadar> tureConnectMap = new ConcurrentHashMap(); public static ConcurrentHashMap<String, Object> SuccessConnectMap = new ConcurrentHashMap(); /** * Netty初始化配置 @@ -106,14 +106,14 @@ // 连接失败信息插入Set falseConnectSet.add(ardEquipRadar); // 连接失败信息从map移除 tureConnectMap.remove(futureListener.channel().id()); tureConnectMap.remove( host + ":" + port); SuccessConnectMap.remove(ardEquipRadar.getId()); } else { log.debug("雷达【" + host + ":" + port + "】连接成功"); // 连接成功信息从Set拔除 falseConnectSet.remove(ardEquipRadar); // 连接成功信息写入map tureConnectMap.put(futureListener.channel().id(), ardEquipRadar); tureConnectMap.put(host+"_"+port, ardEquipRadar); SuccessConnectMap.put(ardEquipRadar.getId(),futureListener.channel()); } });