using SunlightCentralizedControlManagement_SCCM_.UserClass; using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.Net; using System.Net.Http; using System.Net.Sockets; using System.Reflection.Emit; using System.Text; using System.Threading; using System.Threading.Tasks; using System.Diagnostics; using TouchSocket.Core; using TouchSocket.Sockets; using SunlightCentralizedControlManagement_SCCM_.ViewModel; using System.Runtime.InteropServices; using ScottPlot.Colormaps; using static System.Windows.Forms.AxHost; using static System.Windows.Forms.VisualStyles.VisualStyleElement.TaskbarClock; using static System.Windows.Forms.VisualStyles.VisualStyleElement; using Newtonsoft.Json; using static SunlightCentralizedControlManagement_SCCM_.UserClass.SqliteHelper; using SunlightCentralizedControlManagement_SCCM_.View; using TcpClient = TouchSocket.Sockets.TcpClient; namespace SunlightCentralizedControlManagement_SCCM_.UserClass {/// /// 异步TCP客户端 /// public class AsyncTcpClient { public async Task TcpClient(string ip,string port) { TcpClient tcpClient = new TcpClient(); tcpClient.Connecting = (client, e) => { return EasyTask.CompletedTask; };//即将连接到服务器,此时已经创建socket,但是还未建立tcp tcpClient.Connected = (client, e) => { return EasyTask.CompletedTask; };//成功连接到服务器 tcpClient.Closing = (client, e) => { return EasyTask.CompletedTask; };//即将从服务器断开连接。此处仅主动断开才有效。 tcpClient.Closed = (client, e) => { return EasyTask.CompletedTask; };//从服务器断开连接,当连接不成功时不会触发。 tcpClient.Received = (client, e) => { //从服务器收到信息。但是一般byteBlock和requestInfo会根据适配器呈现不同的值。 var mes = e.ByteBlock.Span.ToString(Encoding.UTF8); tcpClient.Logger.Info($"客户端接收到信息:{mes}"); return EasyTask.CompletedTask; }; //载入配置 await tcpClient.SetupAsync(new TouchSocketConfig() .SetRemoteIPHost(ip+":"+port) .ConfigureContainer(a => { a.AddConsoleLogger();//添加一个日志注入 })); await tcpClient.ConnectAsync();//调用连接,当连接不成功时,会抛出异常。 Result result = await tcpClient.TryConnectAsync();//或者可以调用TryConnectAsync if (result.IsSuccess()) { } tcpClient.Logger.Info("客户端成功连接"); } // public Task SendAsync(string id, ReadOnlyMemory memory); // public Task SendAsync(string id, IRequestInfo requestInfo); } }