This commit is contained in:
zc
2026-03-13 09:47:51 +08:00
parent 687be5840e
commit d60966dd3f
7 changed files with 35 additions and 32 deletions

View File

@@ -33,7 +33,6 @@ public class NettyTcpServer {
private EventLoopGroup workerGroup;
private Channel serverChannel;
@PostConstruct
public void start() throws InterruptedException {
log.info("正在启动TCP服务端端口: {}", port);
@@ -43,27 +42,27 @@ public class NettyTcpServer {
ServerBootstrap bootstrap = new ServerBootstrap();
bootstrap.group(bossGroup, workerGroup)
.channel(NioServerSocketChannel.class)
.option(ChannelOption.SO_BACKLOG, 128)
.childOption(ChannelOption.SO_KEEPALIVE, true)
.childHandler(new ChannelInitializer<SocketChannel>() {
@Override
protected void initChannel(SocketChannel ch) {
ChannelPipeline pipeline = ch.pipeline();
.channel(NioServerSocketChannel.class)
.option(ChannelOption.SO_BACKLOG, 128)
.childOption(ChannelOption.SO_KEEPALIVE, true)
.childHandler(new ChannelInitializer<SocketChannel>() {
@Override
protected void initChannel(SocketChannel ch) {
ChannelPipeline pipeline = ch.pipeline();
// 解决TCP粘包问题
pipeline.addLast(new LineBasedFrameDecoder(1024));
// 解决TCP粘包问题
pipeline.addLast(new LineBasedFrameDecoder(1024));
// 字符串编解码
pipeline.addLast(new StringDecoder(CharsetUtil.UTF_8));
pipeline.addLast(new StringEncoder(CharsetUtil.UTF_8));
// 字符串编解码
pipeline.addLast(new StringDecoder(CharsetUtil.UTF_8));
pipeline.addLast(new StringEncoder(CharsetUtil.UTF_8));
// 关键修复直接new不要从Spring容器获取
pipeline.addLast(new TcpServerHandler());
// 关键修复直接new不要从Spring容器获取
pipeline.addLast(new TcpServerHandler());
log.debug("新连接接入,处理器已添加");
}
});
log.debug("新连接接入,处理器已添加");
}
});
ChannelFuture future = bootstrap.bind(port).sync();
if (future.isSuccess()) {

View File

@@ -2,9 +2,6 @@ package top.wms.admin.controller.tcp.service;
import io.netty.channel.Channel;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.web.bind.annotation.RequestParam;
import top.continew.starter.core.validation.CheckUtils;
import top.wms.admin.controller.tcp.manager.ChannelManager;
import top.wms.admin.controller.tcp.model.VMResult;
import lombok.extern.slf4j.Slf4j;
@@ -51,10 +48,8 @@ public class CommandService {
// 获取统计信息
public String getStatistics() {
return String.format("成功: %d, 失败: %d, 总数: %d",
successCount.get(),
failCount.get(),
successCount.get() + failCount.get());
return String.format("成功: %d, 失败: %d, 总数: %d", successCount.get(), failCount.get(), successCount
.get() + failCount.get());
}
// 获取最新结果
@@ -62,11 +57,10 @@ public class CommandService {
return resultQueue.peek();
}
@Autowired
private ChannelManager channelManager;
// @Scheduled(cron = "*/3 * * * * ?")
// @Scheduled(cron = "*/3 * * * * ?")
public void sendAndWait() {
// 1. 检查连接
log.info("查询时间========");

View File

@@ -32,13 +32,13 @@ public class VmCommandController {
log.info("发送指令: {}", sendMsg);
// 3. 等待响应
String response = requestMatcher.waitForResponse(20);
CheckUtils.throwIf("TIMEOUT".equals(response),"响应超时,请重试");
CheckUtils.throwIf("TIMEOUT".equals(response), "响应超时,请重试");
if (StrUtil.equals(response, "success") || StrUtil.equals(response, "failed")) {
return response;
}
if (StrUtil.equals(response, msg)) {
response = "success";
}else{
} else {
response = "failed";
}
// 4. 返回结果

View File

@@ -52,10 +52,9 @@ public class AHDZCConnect {
@PostConstruct
public void init() {
// 项目启动时初始化并启动服务
if (false) {
ScaleService();
start();
}
}
@PreDestroy

View File

@@ -14,7 +14,7 @@ spring.datasource:
# 请务必提前创建好名为 wms_admin 的数据库,如果使用其他数据库名请注意同步修改 DB_NAME 配置
url: jdbc:p6spy:mysql://127.0.0.1:3306/wms?serverTimezone=Asia/Shanghai&useSSL=true&useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&autoReconnect=true&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true
username: root
password: test123$
password: root
# PostgreSQL 配置
# url: jdbc:p6spy:mysql://192.168.2.30:${DB_PORT:3306}/continew?serverTimezone=Asia/Shanghai&useSSL=true&useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&autoReconnect=true&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true
# username: ${DB_USER:root}