| | |
| | | package com.ard.utils.tcp; |
| | | |
| | | import com.ard.alarm.radar.domain.ArdEquipRadar; |
| | | import io.netty.bootstrap.Bootstrap; |
| | | import io.netty.channel.ChannelFuture; |
| | | import io.netty.channel.ChannelFutureListener; |
| | |
| | | import org.springframework.scheduling.annotation.Async; |
| | | import org.springframework.scheduling.annotation.EnableAsync; |
| | | import org.springframework.stereotype.Component; |
| | | |
| | | import java.util.concurrent.TimeUnit; |
| | | |
| | | /** |
| | | * @Description: |
| | |
| | | @Slf4j(topic = "radar") |
| | | public class NettyTcpClient { |
| | | @Async |
| | | public void init(String host, Integer port) { |
| | | NioEventLoopGroup group = new NioEventLoopGroup(); |
| | | try { |
| | | Bootstrap bootstrap = new Bootstrap(); |
| | | bootstrap.group(group) |
| | | .channel(NioSocketChannel.class) |
| | | .handler(new ChannelInitializer<SocketChannel>() { |
| | | @Override |
| | | protected void initChannel(SocketChannel ch) throws Exception { |
| | | ch.pipeline().addLast(new NettyTcpClientHandler()); |
| | | } |
| | | }); |
| | | ChannelFuture future = bootstrap.connect(host, port).sync(); |
| | | // 添加连接成功的监听器 |
| | | future.addListener((ChannelFutureListener) future1 -> { |
| | | if (future1.isSuccess()) { |
| | | log.info("tcp连接成功"+host+":"+port); |
| | | } else { |
| | | log.info("tcp连接失败"+host+":"+port); |
| | | } |
| | | }); |
| | | future.channel().closeFuture().sync(); |
| | | public void init(ArdEquipRadar ardEquipRadar) { |
| | | |
| | | } catch (Exception ex) { |
| | | log.error("nettyTcp客户端初始化异常:" + ex.getMessage()); |
| | | } finally { |
| | | group.shutdownGracefully(); |
| | | while (true) { |
| | | NioEventLoopGroup group = new NioEventLoopGroup(); |
| | | try { |
| | | Bootstrap bootstrap = new Bootstrap(); |
| | | bootstrap.group(group) |
| | | .channel(NioSocketChannel.class) |
| | | .handler(new ChannelInitializer<SocketChannel>() { |
| | | @Override |
| | | protected void initChannel(SocketChannel ch) throws Exception { |
| | | ch.pipeline().addLast(new NettyTcpClientHandler(ardEquipRadar)); |
| | | } |
| | | }); |
| | | String host = ardEquipRadar.getIp(); |
| | | Integer port = ardEquipRadar.getPort(); |
| | | ChannelFuture future = bootstrap.connect(host, port).sync(); |
| | | // 添加连接成功的监听器 |
| | | future.addListener((ChannelFutureListener) future1 -> { |
| | | if (future1.isSuccess()) { |
| | | log.info("tcp连接成功" + host + ":" + port); |
| | | } else { |
| | | log.info("tcp连接失败" + host + ":" + port); |
| | | } |
| | | }); |
| | | future.channel().closeFuture().sync(); |
| | | |
| | | } catch (Exception e) { |
| | | log.error("nettyTcp客户端初始化异常:" + e.getMessage()); |
| | | try { |
| | | TimeUnit.SECONDS.sleep(5); // 等待5秒后重新连接 |
| | | } catch (InterruptedException ex) { |
| | | Thread.currentThread().interrupt(); |
| | | } |
| | | } finally { |
| | | group.shutdownGracefully(); |
| | | } |
| | | } |
| | | } |
| | | } |