接口開發筆記-WebApi-CSDN博客
以太網常用通訊協議
1、modbus tcp
using EasyModbus;
using System;class Program
{static void Main(string[] args){// 創建Modbus客戶端實例ModbusClient modbusClient = new ModbusClient("192.168.1.100"); // IP地址modbusClient.Port = Modbus.Port.TcpPort(502); // Modbus TCP端口,默認是502modbusClient.UnitIdentifier = 1; // Modbus單元標識符,根據你的設備設置try{// 連接服務器modbusClient.Connect();// 讀取保持寄存器,例如從地址0開始的4個寄存器ushort[] registers = modbusClient.ReadHoldingRegisters(0, 4);Console.WriteLine("Read registers:");foreach (ushort reg in registers){Console.WriteLine(reg);}}catch (Exception ex){Console.WriteLine("Error: " + ex.Message);}finally{// 斷開連接if (modbusClient.Connected){modbusClient.Disconnect();}}}
}
2.Socket編程
//示例代碼:TCP客戶端using System;
using System.Net;
using System.Net.Sockets;
using System.Text;class TCPClientExample
{static void Main(){// 創建Socket對象Socket clientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);// 連接到服務器clientSocket.Connect("127.0.0.1", 12345); // 服務器IP和端口// 發送數據string message = "Hello, Server!";byte[] byteData = Encoding.ASCII.GetBytes(message);clientSocket.Send(byteData);// 接收數據byte[] receivedBytes = new byte[1024];int bytesReceived = clientSocket.Receive(receivedBytes);string response = Encoding.ASCII.GetString(receivedBytes, 0, bytesReceived);Console.WriteLine("Received: " + response);// 關閉連接clientSocket.Shutdown(SocketShutdown.Both);clientSocket.Close();}
}
//示例代碼:TCP服務器using System;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Threading;class TCPServerExample
{public static void StartListening(){// 創建Socket對象Socket serverSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);IPEndPoint localEndPoint = new IPEndPoint(IPAddress.Any, 12345); // 監聽端口12345serverSocket.Bind(localEndPoint); // 綁定端口serverSocket.Listen(10); // 最大連接數10Console.WriteLine("Server started...");while (true){Socket clientSocket = serverSocket.Accept(); // 接受客戶端連接請求Thread receiveThread = new Thread(new ParameterizedThreadStart(ReceiveMessage)); // 開啟新線程處理客戶端請求receiveThread.Start(clientSocket); // 啟動線程處理客戶端請求}}private static void ReceiveMessage(object clientSocketObj){Socket clientSocket = (Socket)clientSocketObj;byte[] buffer = new byte[1024]; // 接收緩沖區int bytesReceived = clientSocket.Receive(buffer); // 接收數據長度string data = Encoding.ASCII.GetString(buffer, 0, bytesReceived); // 將字節轉換為字符串Console.WriteLine("Received: " + data); // 輸出接收到的數據string response = "ACK"; // 響應消息byte[] byteData = Encoding.ASCII.GetBytes(response); // 將字符串轉換為字節數組并發送回去clientSocket.Send(byteData); // 發送響應數據到客戶端clientSocket.Shutdown(SocketShutdown.Both); // 關閉連接clientSocket.Close(); // 關閉套接字對象}static void Main() { StartListening(); }
}