【 C# 】 簡易的Socket TCP Client客戶端 -- 與PLC通訊
阿新 • • 發佈:2018-12-17
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); } } }