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

        }

相关内容

热门资讯

四分钟辅助挂!微信边锋辅助挂件... 四川途游小程序辅助软件开挂教程视频分享装挂详细步骤在当今的网络游戏中,四川途游小程序辅助软件作为一种...
透视规律!德州局脚本,微乐自建... 透视规律!德州局脚本,微乐自建房辅助免费入口,解密教程(有挂实锤);无需打开直接搜索打开薇:1367...
必备教程!财神十三章安装包,新... >>您好:财神十三章安装包确实是有挂的,很多玩家在这款财神十三章安装包游戏中打牌都会发现很多用户的牌...
4分钟辅助挂!全来潜山跑风辅助... 4分钟辅助挂!全来潜山跑风辅助器,九九山城万州版脚本(领会开挂辅助透视器)1、下载安装好九九山城万州...
我来分享!福建天天开心辅助,传... 您好:福建天天开心辅助这款游戏可以开挂的,确实是有挂的,很多玩家在这款游戏中打牌都会发现很多用户的牌...
透视安卓版!德普之星辅助工具如... 透视安卓版!德普之星辅助工具如何打开,金虎爷辅助,软件教程(有挂方法);无需打开直接搜索加(薇:13...
三分钟辅助挂!新九游辅助软件,... 三分钟辅助挂!新九游辅助软件,山西扣点免费辅助下载(晓得透视开挂辅助挂);无需打开直接搜索微信(13...
最新技巧!中至余干六副里,边锋... 大家好,今天小编来为大家解答边锋老友填大坑辅助这个问题咨询软件客服可以免费测试直接加微信(13670...
透视线上!wepokerplu... 您好:这款wepoker轻量版辅助游戏是可以开挂的,确实是有挂的,很多玩家在这款wepoker轻量版...
八分钟辅助挂!欢乐联盟辅助器,... 八分钟辅助挂!欢乐联盟辅助器,飞驰娱乐科技软件(精通开挂辅助下载)这是一款可以让一直输的玩家,快速成...