public class NettyClientHandler extends ChannelInboundHandlerAdapter { /** * 连接建立 * * @param ctx * @throws Exception */ @Override public void channelActive(ChannelHandlerContext ctx) throws Exception { super.channelActive(ctx); } /** * 连接断开 * * @param ctx * @throws Exception */ @Override public void channelInactive(ChannelHandlerContext ctx) throws Exception { InetSocketAddress ipSocket = (InetSocketAddress) ctx.channel().remoteAddress(); int port = ipSocket.getPort(); String host = ipSocket.getHostString(); // 连接断开后的最后处理 ctx.pipeline().remove(this); ctx.deregister(); ctx.close(); // 将失败信息插入Set集合 NettyClient.falseConnectSet.add(host + ":" + port); super.channelInactive(ctx); } /** * 通道数据读取 * 业务操作 * * @param ctx * @param msg * @throws Exception */ @Override public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception { InetSocketAddress insocket = (InetSocketAddress) ctx.channel().remoteAddress(); String clientIP = insocket.getAddress().getHostAddress(); int port = insocket.getPort(); ByteBuf buf = (ByteBuf) msg; byte[] bytes = new byte[buf.readableBytes()]; buf.readBytes(bytes); int[] data = new int[bytes.length]; for (int i = 0; i < data.length; i++) { if (bytes[i] > 0) { data[i] = Integer.valueOf(bytes[i]); } else { data[i] = bytes[i] & 0xff; } } RadarFlowData.addDataMap(clientIP + port, data); ctx.flush(); buf.release(); } /** * 事件触发 * * @param ctx * @param evt * @throws Exception */ @Override public void userEventTriggered(ChannelHandlerContext ctx, Object evt) throws Exception { super.userEventTriggered(ctx, evt); } /** * 异常触发 * * @param ctx * @param cause * @throws Exception */ @Override public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception { super.exceptionCaught(ctx, cause); cause.printStackTrace(); ctx.close(); }
Netty数据处理NettyClientHandler
于 2022-10-18 10:36:46 首次发布