using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading; using System.Threading.Tasks; using NewLife.Log; using TouchSocket.Core; using TouchSocket.Sockets; using Timer = System.Timers.Timer; namespace NDSD_Screwdriver.Tool { public class QingTcpClient2 { public int IsOk { get; set; } public string updateTime { get; set; } private int eable = -1; TcpClient tcpClient = new TcpClient(); private Timer timer1 = null; public QingTcpClient2(string str = "192.168.5.212:4545") { tcpClient.Connecting = (client, e) => EasyTask.CompletedTask;//即将连接到服务器,此时已经创建socket,但是还未建立tcp tcpClient.Connected = (client, e) => EasyTask.CompletedTask;//成功连接到服务器 tcpClient.Setup(new TouchSocketConfig() .SetRemoteIPHost(str) .ConfigureContainer(a => { a.AddConsoleLogger();//添加一个日志注入 })); tcpClient.Received = (client, e) => { //从服务器收到信息。但是一般byteBlock和requestInfo会根据适配器呈现不同的值。 var mes = e.ByteBlock.Span.ToString(Encoding.ASCII); var sb = Sub(mes); // switch (sb) // { // case "0002": // switch (eable) // { // case 1: // client.Send("00200043 \0"); // break; // case 0: // client.Send("00200042 \0"); // break; // } // eable = -1; // break; // case "0043": // client.Send("00300064001 0000000000\0"); // break; // // case "0065": // IsOk = mes.Substring(96, 19).ToInt(); // updateTime = mes.Substring(95, 1); // break; // } // XTrace.WriteLine($"客户端接收到信息:{mes}"); return EasyTask.CompletedTask; }; tcpClient.Connect(); Begin(); Thread.Sleep(200); Satus(); timer1 = new Timer(); timer1.Enabled = true; timer1.Elapsed += timer1_Tick; timer1.Interval = 500; //设置时间间隔(毫秒为单位)单位Ms timer1.Start(); } private string Sub(string str) { string mes = ""; var length = str.TrimStart().Length; if (length >= 9) { mes = str.Substring(4, 4); } if (mes == "0005" && length >= 24) { mes = str.Substring(20, 4); } return mes; } private void timer1_Tick(object sender, EventArgs e) { tcpClient.Send("00209999 \0"); } public void Begin() { tcpClient.Send("00200001 \0"); } public void Enable() { tcpClient.Send("00200043 \0"); } public void Close() { tcpClient.Send("00200042 \0"); } public void Satus() { tcpClient.Send("00300064001 0000000000\0"); } } }