已知設備 IP、端口及通訊協議(如修改出廠 IP、恢復出廠設置指令),需在 C# 中實現 TCP 客戶端發送指令並接收響應。
using System;
using System.Net;
using System.Net.Sockets;
using System.Text;
namespace DeviceController
{
class Program
{
static void Main(string[] args)
{
string ip = "192.168.1.100"; // 設備 IP
int port = 5000; // 設備端口
string cmd = "SET_IP 192.168.1.200"; // 例:修改 IP 指令
try
{
using (Socket client = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp))
{
client.Connect(new IPEndPoint(IPAddress.Parse(ip), port));
Console.WriteLine("已連接設備");
byte[] sendBytes = Encoding.ASCII.GetBytes(cmd + "\r\n"); // 協議可能需換行符
client.Send(sendBytes);
Console.WriteLine("指令已發送: " + cmd);
byte[] recvBytes = new byte[1024];
int len = client.Receive(recvBytes);
string response = Encoding.ASCII.GetString(recvBytes, 0, len);
Console.WriteLine("設備響應: " + response);
}
}
catch (Exception ex)
{
Console.WriteLine("異常: " + ex.Message);
}
Console.ReadKey();
}
}
}
\r\n 或 \n 結尾,發送前需確認協議文檔。client.ReceiveTimeout 並捕獲 SocketException。UI 程序中應使用 BeginConnect/BeginSend/BeginReceive 或 async/await 避免阻塞主線程。