using Microsoft.Extensions.Logging; using System; using System.Threading; using System.Threading.Tasks; using YunDa.Server.ISMSTcp.Controllers; using YunDa.Server.ISMSTcp.Interfaces; using YunDa.SOMS.ExternalInteraction.DataTransferObject.InspectionEquipment; namespace YunDa.Server.ISMSTcp.Services { public class ZzTcpService { private readonly ILogger _logger; private ITcpClient _tcpClient = null; public ZzTcpService(ILogger logger) { _logger = logger; } public void Init(ITcpClient tcpClient) { _tcpClient = tcpClient; } public async Task<(bool Success, string ErrorMessage)> SendTcpMessageAsync(string message, CancellationToken cancellationToken) { try { // 使用QueryService的TCP客户端发送消息 // 注意:这里直接通过ITcpClient发送,不需要等待响应 var tcpClient = GetTcpClientFromQueryService(); if (tcpClient == null) { return (false, "TCP客户端未初始化"); } if (!tcpClient.IsConnected) { return (false, "TCP连接未建立"); } var sendResult = await tcpClient.SendMessageAsync(message, cancellationToken); if (!sendResult) { return (false, "TCP消息发送失败"); } return (true, string.Empty); } catch (Exception ex) { _logger.LogError(ex, "发送TCP消息时发生异常"); return (false, ex.Message); } } /// /// 从QueryService获取TCP客户端 /// /// TCP客户端实例 private ITcpClient GetTcpClientFromQueryService() { return _tcpClient; } } }