C# Nuget上一个轻量级TCP\IP通讯库(SimpleTCP)
创始人
2024-12-28 10:06:46
0

简介:

工作中经常遇到需要实现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();

        }

相关内容

热门资讯

5分钟控制牌!hhpoker辅... 5分钟控制牌!hhpoker辅助,hhpoker有没有辅助,详细教程(有挂规律)1、hhpoker辅...
七分钟ai插件!aapoker... 七分钟ai插件!aapoker辅助器怎么用(透视脚本)详细辅助神器(竟然是真的有挂);该软件可以轻松...
8分钟激活码!we-poker... 8分钟激活码!we-poker辅助软件教程(透视底牌)详细辅助作弊器(一贯存在有挂)1、we-pok...
五分钟辅助!wpk透视工作室(... 五分钟辅助!wpk透视工作室(透视辅助)详细辅助免费(原来存在有挂)1、wpk透视工作室系统规律教程...
1分钟德州有挂!hhpoker... 1分钟德州有挂!hhpoker有没有作弊挂(透视脚本)详细辅助神器(真是存在有挂)一、软件透明挂的定...
7分钟透视插件!aapoker... 7分钟透视插件!aapoker透视插件,aapoker怎么开辅助器,详细教程(有挂教程);1、进入游...
七分钟看牌型!wepoker透... 七分钟看牌型!wepoker透视脚本免费使用视频(透视底牌)详细辅助工具(一贯是有挂);七分钟看牌型...
三分钟下载链接!wpk透视是真... 三分钟下载链接!wpk透视是真的吗(透视辅助)详细辅助工具(其实是真的有挂)三分钟下载链接!wpk透...
八分钟德州透视!德州局怎么透视... 八分钟德州透视!德州局怎么透视,hh poker软件,详细教程(有挂下载)1、起透看视 hh pok...
5分钟透视教程!aapoker... 5分钟透视教程!aapoker怎么控制牌(透视脚本)详细辅助方法(切实真的有挂);在进入辅助挂后,参...