From 0b25d230881ce4d56233a4834eb520d120f9a7a9 Mon Sep 17 00:00:00 2001 From: ‘liusuyi’ <1951119284@qq.com> Date: 星期日, 25 六月 2023 17:15:50 +0800 Subject: [PATCH] 增加nettyTcp客户端 --- src/main/java/com/ard/utils/tcp/NettyTcpClient.java | 47 +++++++++++++++ src/main/resources/logback-spring.xml | 26 ++++++++ src/main/java/com/ard/utils/tcp/NettyTcpClientHandler.java | 43 ++++++++++++++ src/main/java/com/ard/alarm/camera/service/impl/ArdCamerasServiceImpl.java | 2 src/main/java/com/ard/alarm/tube/service/TubeAlarmService.java | 5 + 5 files changed, 122 insertions(+), 1 deletions(-) diff --git a/src/main/java/com/ard/alarm/camera/service/impl/ArdCamerasServiceImpl.java b/src/main/java/com/ard/alarm/camera/service/impl/ArdCamerasServiceImpl.java index f0d3071..1726943 100644 --- a/src/main/java/com/ard/alarm/camera/service/impl/ArdCamerasServiceImpl.java +++ b/src/main/java/com/ard/alarm/camera/service/impl/ArdCamerasServiceImpl.java @@ -18,7 +18,7 @@ * @date 2023-02-11 */ @Service -@Slf4j +@Slf4j(topic = "camera") public class ArdCamerasServiceImpl implements IArdCamerasService { @Resource private ArdCamerasMapper ardCamerasMapper; diff --git a/src/main/java/com/ard/alarm/tube/service/TubeAlarmService.java b/src/main/java/com/ard/alarm/tube/service/TubeAlarmService.java index bb9cbdb..360f727 100644 --- a/src/main/java/com/ard/alarm/tube/service/TubeAlarmService.java +++ b/src/main/java/com/ard/alarm/tube/service/TubeAlarmService.java @@ -3,6 +3,7 @@ import com.alibaba.fastjson2.JSON; import com.ard.utils.DateUtils; import com.ard.utils.mqtt.MqttConsumer; +import com.ard.utils.tcp.NettyTcpClient; import com.ard.utils.udp.NettyUdpServer; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Value; @@ -28,6 +29,8 @@ public class TubeAlarmService { @Resource NettyUdpServer nettyUdpServer; + @Resource + NettyTcpClient nettyTcpClient; @Value("${spring.netty.port}") private Integer udpPort; @Value("${spring.netty.enabled}") @@ -40,6 +43,8 @@ } nettyUdpServer.init(udpPort); log.info("UDP鏈嶅姟宸茬粡鍚姩"); + nettyTcpClient.init("112.98.126.2",1200); + log.info("TCP瀹㈡埛绔凡杩炴帴"); } @Async("alarm") diff --git a/src/main/java/com/ard/utils/tcp/NettyTcpClient.java b/src/main/java/com/ard/utils/tcp/NettyTcpClient.java new file mode 100644 index 0000000..2d01793 --- /dev/null +++ b/src/main/java/com/ard/utils/tcp/NettyTcpClient.java @@ -0,0 +1,47 @@ +package com.ard.utils.tcp; + +import io.netty.bootstrap.Bootstrap; +import io.netty.channel.ChannelFuture; +import io.netty.channel.ChannelInitializer; +import io.netty.channel.nio.NioEventLoopGroup; +import io.netty.channel.socket.SocketChannel; +import io.netty.channel.socket.nio.NioSocketChannel; +import lombok.extern.slf4j.Slf4j; +import org.springframework.scheduling.annotation.Async; +import org.springframework.scheduling.annotation.EnableAsync; +import org.springframework.stereotype.Component; + +/** + * @Description: + * @ClassName: NettyTcpClient + * @Author: 鍒樿嫃涔� + * @Date: 2023骞�06鏈�25鏃�17:00 + * @Version: 1.0 + **/ +@EnableAsync +@Component +@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.channel().closeFuture().sync(); + + } catch (Exception ex) { + log.error("nettyTcp瀹㈡埛绔垵濮嬪寲寮傚父:" + ex.getMessage()); + } finally { + group.shutdownGracefully(); + } + } +} diff --git a/src/main/java/com/ard/utils/tcp/NettyTcpClientHandler.java b/src/main/java/com/ard/utils/tcp/NettyTcpClientHandler.java new file mode 100644 index 0000000..5770cdc --- /dev/null +++ b/src/main/java/com/ard/utils/tcp/NettyTcpClientHandler.java @@ -0,0 +1,43 @@ +package com.ard.utils.tcp; + +import io.netty.buffer.ByteBuf; +import io.netty.channel.ChannelHandlerContext; +import io.netty.channel.SimpleChannelInboundHandler; +import lombok.extern.slf4j.Slf4j; + +import javax.xml.bind.DatatypeConverter; + +/** + * @Description: tcp瀹㈡埛绔鐞� + * @ClassName: NettyTcpClientHandler + * @Author: 鍒樿嫃涔� + * @Date: 2023骞�06鏈�25鏃�17:02 + * @Version: 1.0 + **/ +@Slf4j +public class NettyTcpClientHandler extends SimpleChannelInboundHandler<ByteBuf> { + @Override + protected void channelRead0(ChannelHandlerContext ctx, ByteBuf msg){ + // 澶勭悊鎺ユ敹鍒扮殑娑堟伅 + byte[] byteArray = new byte[msg.readableBytes()]; + msg.getBytes(msg.readerIndex(), byteArray); + String hexString = DatatypeConverter.printHexBinary(byteArray); + + log.info("Received: " + hexString); + } + + @Override + public void channelActive(ChannelHandlerContext ctx) throws Exception { + // 褰撳鎴风杩炴帴鎴愬姛鍚庯紝鍙戦�佹秷鎭粰鏈嶅姟鍣� + ByteBuf message = ctx.alloc().buffer(); + message.writeBytes("Hello, Server!".getBytes()); + ctx.writeAndFlush(message); + } + + @Override + public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause){ + // 鍙戠敓寮傚父鏃剁殑澶勭悊 + cause.printStackTrace(); + ctx.close(); + } +} diff --git a/src/main/resources/logback-spring.xml b/src/main/resources/logback-spring.xml index f993d77..7f2dac9 100644 --- a/src/main/resources/logback-spring.xml +++ b/src/main/resources/logback-spring.xml @@ -54,6 +54,28 @@ <onMismatch>DENY</onMismatch> </filter> </appender> + <!--閫氱敤鍏夌數鎶ヨ鏃ュ織杈撳嚭--> + <appender name="camera" class="ch.qos.logback.core.rolling.RollingFileAppender"> + <file>${log.path}/camera.log</file> + <!--寰幆鏀跨瓥锛氬熀浜庢椂闂村垱寤烘棩蹇楁枃浠�--> + <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> + <!--鏃ュ織鏂囦欢鍚嶆牸寮�--> + <fileNamePattern>${log.path}/camera.%d{yyyy-MM-dd}.log</fileNamePattern> + <!--鏃ュ織鏈�澶х殑鍘嗗彶60澶�--> + <maxHistory>60</maxHistory> + </rollingPolicy> + <encoder> + <pattern>${log.pattern}</pattern> + </encoder> + <filter class="ch.qos.logback.classic.filter.LevelFilter"> + <!--杩囨护鐨勭骇鍒�--> + <level>INFO</level> + <!--鍖归厤鏃剁殑鎿嶄綔锛氭帴鏀讹紙璁板綍锛�--> + <onMatch>ACCEPT</onMatch> + <!--涓嶅尮閰嶆椂鐨勬搷浣滐細鎷掔粷锛堜笉璁板綍锛�--> + <onMismatch>DENY</onMismatch> + </filter> + </appender> <root level="DEBUG"> <appender-ref ref="console"/> </root> @@ -65,5 +87,9 @@ <root level="INFO"> <appender-ref ref="tube"/> </root> + <!--閫氱敤鍏夌數鎶ヨ鎿嶄綔鏃ュ織--> + <root level="INFO"> + <appender-ref ref="camera"/> + </root> </configuration> -- Gitblit v1.9.3