lixun 2 lat temu
rodzic
commit
d28739cc62

+ 0 - 14
src/YSAI.DAQ/YSAI.Core/interface/only/IBaseCommunication.cs

@@ -1,14 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using YSAI.Core.@interface.unify;
-
-namespace YSAI.Core.@interface.only
-{
-    /// <summary>
-    /// 底层客户端通信
-    /// </summary>
-    public interface IBaseCommunication : IOn, IOff, ISend, IReadOrWrite,IDisposable { }
-}

+ 9 - 3
src/YSAI.DAQ/YSAI.Core/interface/only/ISocket.cs

@@ -1,14 +1,19 @@
 using System;
 using System.Collections.Generic;
 using System.Linq;
+using System.Net;
 using System.Text;
 using System.Threading.Tasks;
-using YSAI.Core.@interface.unify;
 using YSAI.Core.data;
-using System.Net;
+using YSAI.Core.@interface.unify;
 
 namespace YSAI.Core.@interface.only
 {
+    /// <summary>
+    /// 底层基础通信接口
+    /// </summary>
+    public interface IUC : IOn, IOff, ISend, IReadOrWrite,IDisposable { }
+
     /// <summary>
     /// tcp服务接口
     /// </summary>
@@ -44,10 +49,11 @@ namespace YSAI.Core.@interface.only
         /// <returns></returns>
         Task<OperateResult> SendAsync(byte[] Data, string? Address = null);
     }
+
     /// <summary>
     /// udp接口
     /// </summary>
-    public interface ISocketUdp : IOn, IOff, IDisposable
+    public interface ISocketUdp : IOn, IOff, IReadOrWrite, ISend, IDisposable
     {
         /// <summary>
         /// 读取或发送

+ 2 - 2
src/YSAI.DAQ/YSAI.Core/interface/unify/ISend.cs

@@ -13,13 +13,13 @@ namespace YSAI.Core.@interface.unify
     public interface ISend
     {
         /// <summary>
-        /// 读取或发送
+        /// 发送
         /// </summary>
         /// <param name="Data">字节数据</param>
         /// <returns>统一出参</returns>
         Task<OperateResult> SendAsync(byte[] Data);
         /// <summary>
-        /// 读取或发送
+        /// 发送
         /// </summary>
         /// <param name="Data">字节数据</param>
         /// <returns>统一出参</returns>

+ 1 - 1
src/YSAI.DAQ/YSAI.Core/serialport/SerialPortOperate.cs

@@ -15,7 +15,7 @@ namespace YSAI.Core.serialport
     /// <summary>
     /// 串口操作
     /// </summary>
-    public class SerialPortOperate : IBaseAbstract, IBaseCommunication
+    public class SerialPortOperate : IBaseAbstract, IUC
     {
 
         private static readonly object Lock = new object();  //锁

+ 1 - 1
src/YSAI.DAQ/YSAI.Core/socket/tcp/client/SocketTcpClientOperate.cs

@@ -13,7 +13,7 @@ namespace YSAI.Core.socket.tcp.client
     /// <summary>
     /// 客户端
     /// </summary>
-    public class SocketTcpClientOperate : IBaseAbstract<SocketTcpClientData.Event>, IBaseCommunication
+    public class SocketTcpClientOperate : IBaseAbstract<SocketTcpClientData.Event>, IUC
     {
         private static readonly object Lock = new object();  //锁
         private static List<SocketTcpClientOperate> ThisObjList = new List<SocketTcpClientOperate>(); //自身对象集合

+ 1 - 1
src/YSAI.DAQ/YSAI.Core/socket/tcpClient/Operate.cs

@@ -14,7 +14,7 @@ namespace YSAI.Core.socket.tcpClient
     /// <summary>
     /// tcpClient  操作
     /// </summary>
-    public class Operate : IBaseAbstract<SocketTcpClientData.Event>, IBaseCommunication
+    public class Operate : IBaseAbstract<SocketTcpClientData.Event>, IUC
     {
         private static readonly object Lock = new object();  //锁
         private static List<Operate> ThisObjList = new List<Operate>(); //自身对象集合

+ 5 - 0
src/YSAI.DAQ/YSAI.Core/socket/udp/SocketUdpData.cs

@@ -1,6 +1,7 @@
 using System;
 using System.Collections.Generic;
 using System.Linq;
+using System.Net;
 using System.Text;
 using System.Threading.Tasks;
 
@@ -36,6 +37,10 @@ namespace YSAI.Core.socket.udp
             /// 单独读取或写入等待时间
             /// </summary>
             public int AloneReadOrWriteWaitTime { get; set; }
+            /// <summary>
+            /// 指定客户端(可为空)
+            /// </summary>
+            public IPEndPoint? iPEndPoint { get; set; }
 
             /// <summary>
             /// 重写基类中的Equals方法

+ 25 - 0
src/YSAI.DAQ/YSAI.Core/socket/udp/SocketUdpOperate.cs

@@ -11,6 +11,7 @@ using System.Threading.Tasks;
 using YSAI.Core.data;
 using YSAI.Core.@interface.unify;
 using YSAI.Core.@interface.only;
+using System.Collections.Concurrent;
 
 namespace YSAI.Core.socket.udp
 {
@@ -288,6 +289,30 @@ namespace YSAI.Core.socket.udp
                 return Break("Off", false, $"停止服务异常:{ex.Message}");
             }
         }
+
+        public Task<OperateResult> ReadOrWriteAsync(byte[] Data)
+        {
+            return Task.Run(() => ReadOrWrite(Data));
+        }
+
+        public OperateResult ReadOrWrite(byte[] Data)
+        {
+            if (basics.iPEndPoint == null)
+            {
+                return Break(Depart("ReadOrWrite"),false,"客户端地址为空");
+            }
+            return ReadOrWrite(Data, basics.iPEndPoint);
+        }
+
+        public Task<OperateResult> SendAsync(byte[] Data)
+        {
+            return Task.Run(() => Send(Data));
+        }
+
+        public OperateResult Send(byte[] Data)
+        {
+            return Send(Data, basics.iPEndPoint);
+        }
     }
 }
 

+ 28 - 4
src/YSAI.DAQ/YSAI.Core/socket/udpClient/Operate.cs

@@ -19,7 +19,7 @@ namespace YSAI.Core.socket.udpClient
     /// <summary>
     /// udpClient 操作
     /// </summary>
-    public class Operate: IBaseAbstract<SocketUdpData.Event>, ISocketUdp
+    public class Operate : IBaseAbstract<SocketUdpData.Event>, ISocketUdp
     {
 
         private static readonly object Lock = new object();  //锁
@@ -91,7 +91,7 @@ namespace YSAI.Core.socket.udpClient
 
         protected override string ClassName => "SocketUdpOperate";
 
-       
+
 
         /// <summary>
         /// 接收信息
@@ -157,7 +157,7 @@ namespace YSAI.Core.socket.udpClient
 
         public Task<OperateResult> ReadOrWriteAsync(byte[] Data, IPEndPoint iPEndPoint)
         {
-            return Task.Run(() => ReadOrWrite(Data,iPEndPoint));
+            return Task.Run(() => ReadOrWrite(Data, iPEndPoint));
         }
 
         public OperateResult ReadOrWrite(byte[] Data, IPEndPoint iPEndPoint)
@@ -207,7 +207,7 @@ namespace YSAI.Core.socket.udpClient
 
         public Task<OperateResult> SendAsync(byte[] Data, IPEndPoint iPEndPoint)
         {
-            return Task.Run(() => Send(Data,iPEndPoint));
+            return Task.Run(() => Send(Data, iPEndPoint));
         }
 
         public OperateResult Send(byte[] Data, IPEndPoint iPEndPoint)
@@ -290,5 +290,29 @@ namespace YSAI.Core.socket.udpClient
                 return Break("Off", false, $"停止服务异常:{ex.Message}");
             }
         }
+
+        public Task<OperateResult> ReadOrWriteAsync(byte[] Data)
+        {
+            return Task.Run(() => ReadOrWrite(Data));
+        }
+
+        public OperateResult ReadOrWrite(byte[] Data)
+        {
+            if (basics.iPEndPoint == null)
+            {
+                return Break(Depart("ReadOrWrite"), false, "客户端地址为空");
+            }
+            return ReadOrWrite(Data, basics.iPEndPoint);
+        }
+
+        public Task<OperateResult> SendAsync(byte[] Data)
+        {
+            return Task.Run(() => Send(Data));
+        }
+
+        public OperateResult Send(byte[] Data)
+        {
+            return Send(Data, basics.iPEndPoint);
+        }
     }
 }