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

 

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;

        /// 
        /// 构造函数
        /// 
        /// IP地址
        /// 端口号
        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;//返回连接状态
        }

        /// 
        /// 发送消息
        /// 
        /// 需要发送的字节
        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);
            }            
        }

    }

 

你可能感兴趣的:(C#)