【 C# 】 简易的Socket TCP Client客户端 -- 与PLC通讯

版权声明:欢迎分享 https://blog.csdn.net/qq_42791845/article/details/83338732
public class SocketClient
    {
        //声明IP,端口,和一个用来连接的Socket
        private string _ip;
        private int _port;
        private System.Net.Sockets.TcpClient _tcpClient;
        
        //创建一个委托,用来满足其他类调用
        public delegate void DelegateMessage(byte[] bytes) ;
        public event DelegateMessage OnmessageEvent;

        /// <summary>
        /// 构造函数
        /// </summary>
        /// <param name="remoteIp">IP地址</param>
        /// <param name="remotePort">端口号</param>
        public SocketClient(string remoteIp,int remotePort)
        {
            this._ip = remoteIp;
            this._port = remotePort;
        }

        //TCP连接
        public bool Connect()
        {
            _tcpClient = new TcpClient();
            try
            {
                _tcpClient.Connect(IPAddress.Parse(_ip), _port);
                Task.Run(new Action(ReceiveMessage));//开启线程,不停接收消息
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
                throw;
            }
            return true;//返回连接状态
        }

        /// <summary>
        /// 发送消息
        /// </summary>
        /// <param name="bytes">需要发送的字节</param>
        public void SendMessage(byte[] bytes)
        {
            NetworkStream networkStream = _tcpClient.GetStream();
            networkStream.Write(bytes, 0, bytes.Length);
        }


        //接收消息
        public void ReceiveMessage()
        {
            NetworkStream networkStream = _tcpClient.GetStream();
            while (true)
            {
                byte[] buffer = new byte[8];
                int size = networkStream.Read(buffer, 0, buffer.Length);
                OnmessageEvent?.Invoke(buffer);
            }            
        }

    }

猜你喜欢

转载自blog.csdn.net/qq_42791845/article/details/83338732