using System; using System.Collections.Generic; using System.Linq; using System.Net; using System.Net.Sockets; using System.Text; using System.Threading; namespace 常用工具集.Utility.Network { public class SocketHelper { //1.声明关于事件的委托; public delegate void MessageEventHandler(object sender, byte[] bytesList); //2.声明事件; public event MessageEventHandler MessageHandler; private TimeOutSocket socket; private string ipAddress; private int port; public SocketHelper(string ipAddress, int port) { this.ipAddress = ipAddress; this.port = port; socket = new TimeOutSocket(ipAddress, port, 1000); } public SocketHelper() { } public void SendAsyn(string ipAddress, int port, byte[] bytes) { new Thread(() => { try { byte[] retBytes = new byte[1024]; TimeOutSocket socket = new TimeOutSocket(ipAddress, port, 1000); TcpClient client = socket.Connect(); client.SendTimeout = 1000; client.ReceiveTimeout = 1000; NetworkStream ns = client.GetStream(); ns.Write(bytes, 0, bytes.Length); Thread.Sleep(250); int length = ns.Read(retBytes, 0, retBytes.Length); ns.Close(); client.Close(); byte[] newRetBytes = new byte[length]; for (int i = 0; i < length; i++) newRetBytes[i] = retBytes[i]; MessageHandler?.Invoke(this, newRetBytes); } catch (Exception ex) { byte[] retBytes = new byte[1]; retBytes[0] = 0x00; MessageHandler?.Invoke(this, retBytes); } }).Start(); } } }