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();

        }

相关内容

热门资讯

目前来看!微信小程序免费黑科技... 您好,微信小程序免费黑科技这款游戏可以开挂的,确实是有挂的,需要了解加去威信【136704302】很...
实测分享!钱塘十三水怎么开挂辅... 实测分享!钱塘十三水怎么开挂辅助,随意玩有没有辅助,模块教程(果真有挂)1、上手简单,内置详细流程视...
现场直击!微信小程序免费黑科技... 现场直击!微信小程序免费黑科技透视,同乡游辅助工具妙招教程(真的有挂)微信小程序免费黑科技透视方法中...
必备科技!科乐游戏辅助脚本视频... 必备科技!科乐游戏辅助脚本视频,开心泉州小程序辅助免费下载,模板教程(详细教程)1、每一步都需要思考...
教程攻略!微乐小程序免费黑科技... 教程攻略!微乐小程序免费黑科技苹果,wepoker插件程序讲义教程(真实有挂)1、起透看视 微乐小程...
分享一款!微信边锋辅助挂件,战... 分享一款!微信边锋辅助挂件,战皇大厅辅助那个可靠,绝活儿教程(有挂方式)1、微信边锋辅助挂件辅助软件...
玩家科普!微信小程序免费黑科技... 玩家科普!微信小程序免费黑科技透视,乐酷辅助图片法子教程(有挂教程)微信小程序免费黑科技辅助器是一种...
普及知识!新畅游互娱辅助app... 普及知识!新畅游互娱辅助app,微友联盟辅助下载,方案教程(有挂猫腻)1、完成新畅游互娱辅助app有...
必看攻略!微乐小程序免费黑科技... 必看攻略!微乐小程序免费黑科技安卓,江西中至小程序黑科技教程书教程(有挂详情)所有人都在同一条线上,...
玩家必看分享!微乐智能辅助软件... 玩家必看分享!微乐智能辅助软件是真的吗,盛世辅助器,手册教程(发现有挂)1、让任何用户在无需微乐智能...