C# Nuget上一个轻量级TCP\IP通讯库(SimpleTCP)

简介:

工作中经常遇到需要实现TCP客户端或服务端的时候,如果每次都自己写会很麻烦且无聊,使用SuperSocket库又太大了。这时候就可以使用SimpleTCP了,当然仅限于C#语言。

它的主要特点如下:

  • 源码简单:源码就几个类,每个类也不大,在了解TcpClient用法的基础上不需要注释就可以看懂。
  • 功能单一:不像其它库一样功能繁多,它只专注于实现简单的TCP客户端、服务端,使用起来不用担心增加系统的复杂性。
  • 使用简单:后面的示例会具体讲解,启动一个客户端或服务端只需要几行代码,想扩展功能也很简单。

说一下它的不足之处:

  • 性能不是最优的:底层是基于TcpClient的,性能注定不会太高,但能用TcpClient的地方都可以用它。

使用方法:

通过NuGet安装,如下:

实现Server服务器:

       static void Main(string[] args)
        {
            var server = new SimpleTcpServer();
            //设置编码格式,默认是UTF8
            server.StringEncoder = System.Text.ASCIIEncoding.ASCII;
            server.Delimiter = Encoding.ASCII.GetBytes("\r")[0];
            server.Start(IPAddress.Parse("127.0.0.1"),1002);
            server.ClientConnected += Server_ClientConnected;
            server.ClientDisconnected += Server_ClientDisconnected;
            server.DataReceived += Server_DataReceived;

            Console.ReadKey();

        }

        private static void Server_DataReceived(object sender, Message e)
        {
          
            Console.WriteLine("接受信息[" +e.TcpClient.Client.RemoteEndPoint.ToString()+"]:"+ e.MessageString);

           e.Reply("OK");
        }

        private static void Server_ClientDisconnected(object sender, System.Net.Sockets.TcpClient e)
        {
            Console.WriteLine("客户端断开信息["+e.Client.RemoteEndPoint.ToString()+"]");
        }

        private static void Server_ClientConnected(object sender, System.Net.Sockets.TcpClient e)
        {

            Console.WriteLine("客户端连接信息[" + e.Client.RemoteEndPoint.ToString() + "]");
        }
 

实现Client:

  static void Main(string[] args)
        {
            var client = new SimpleTcpClient();

            //设置编码格式,默认是UTF8
            client.StringEncoder = System.Text.ASCIIEncoding.ASCII;
            //设置分隔符,默认是0x13
            client.Delimiter = Encoding.ASCII.GetBytes("\r")[0];

            //收到数据的事件,可以在这里实现自己的协议
            client.DataReceived += (sender, msg) =>
            {

                //字符串消息
                Console.WriteLine(msg.MessageString);
            };

            bool exit = false;
            bool connected = false;
            Task.Factory.StartNew(() =>
            {
                while (!exit)
                {
                    try
                    {
                        if (connected)
                        {
                            //发送心跳
                            client.Write("-");
                            Task.Delay(10000).Wait();
                        }
                        else
                        {
                            //断线重连
                            client.Connect("127.0.0.1",1002);
                            connected = true;
                            Task.Delay(1000).Wait();
                        }
                    }
                    catch (Exception)
                    {
                        connected = false;
                        client.Disconnect();
                    }
                }
            }, TaskCreationOptions.LongRunning);

            Console.ReadKey();

        }

  • 29
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Modbus TCP是一种基于TCP/IP协议的Modbus通信协议,用于实现在工业自动化领域中,设备之间的数据交换。下面是一个简单的C# Modbus TCP代码示例: 1. 首先,需要安装NuGet包“EasyModbusTCP”,可以通过Visual Studio的NuGet包管理器进行安装。 2. 创建一个C#控制台应用程序。 3. 在程序中添加以下代码: ```csharp using EasyModbus; class Program { static void Main(string[] args) { // 创建Modbus TCP客户端 ModbusClient modbusClient = new ModbusClient("127.0.0.1", 502); // 连接Modbus TCP服务器 modbusClient.Connect(); // 读取寄存器值 int[] readValues = modbusClient.ReadHoldingRegisters(0, 10); // 输出读取到的寄存器值 foreach (int value in readValues) { Console.WriteLine(value); } // 断开与Modbus TCP服务器的连接 modbusClient.Disconnect(); } } ``` 在上述代码中,我们使用了EasyModbusTCP中提供的ModbusClient类,创建了一个Modbus TCP客户端,并连接到了本地的Modbus TCP服务器(IP地址为127.0.0.1,端口号为502)。然后,我们使用ReadHoldingRegisters方法读取了从地址0开始的10个保持寄存器的值,并将这些值输出到控制台上。最后,我们断开了与Modbus TCP服务器的连接。 以上是一个简单的C# Modbus TCP代码示例,您可以根据自己的实际需求进行修改和扩展。如果您想了解更多关于EasyModbusTCP的使用方法和示例,请参考官方文档:https://github.com/rossmann-engineering/EasyModbusTCP-Docu

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值