以太网通讯

接口开发笔记-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端口,默认是502
        modbusClient.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); // 监听端口12345
        serverSocket.Bind(localEndPoint); // 绑定端口
        serverSocket.Listen(10); // 最大连接数10
        Console.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(); }
}
相关推荐
宁静致远202114 小时前
qt 操作多个sqlite文件
qt·sqlite·嵌入式linux开发
老哥不老14 小时前
Python SQLite3 保姆级教程:从零开始学数据库操作
数据库·python·sqlite
声声codeGrandMaster16 小时前
Django模板语法及静态文件
数据库·django·sqlite
不剪发的Tony老师18 小时前
SQLiteStudio:一款免费跨平台的SQLite管理工具
数据库·sqlite
老哥不老21 小时前
结合 Pandas 使用 SQLite3 实战
数据库·sqlite·pandas
jay丿1 天前
Django 模型的逆向工程
数据库·django·sqlite
jay丿1 天前
Django在处理模型录入时间差8小时的问题
数据库·django·sqlite
背太阳的牧羊人3 天前
要查看 SQLite 数据库中的所有表,可以通过查询 SQLite 的系统表 sqlite_master
数据库·sqlite
waicsdn_haha3 天前
DBeaver 25.0 社区版安装与数据库连接配置指南(Windows平台)
数据库·人工智能·mysql·postgresql·sqlite·知识图谱·dbeaver