NetCore3.1 TCP服务之BeetleX

十年河东,十年河西,莫欺少年穷

学无止境,精益求精

1、安装包

 2、server端

复制代码
using BeetleX;
using BeetleX.EventArgs;
using System;

namespace BTcp
{
    
    class Program : BeetleX.ServerHandlerBase
    {
        static int Number = 0;
        private static BeetleX.IServer mServer;
        static void Main(string[] args)
        {
            mServer = SocketFactory.CreateTcpServer<Program>();
            mServer.Options.DefaultListen.Port = 9090;
            mServer.Options.DefaultListen.Host = "127.0.0.1";
            mServer.Open();
            Console.WriteLine(mServer.Status);
            Console.Read();
        }
        protected override void OnLogToConsole(IServer server, ServerLogEventArgs e)
        {

            Console.WriteLine($"{DateTime.Now}\t{e.Type}\t{e.Session?.RemoteEndPoint} {e.Message}");
        }

        public override void SessionReceive(IServer server, SessionReceiveEventArgs e)
        {
            base.SessionReceive(server, e);
            var stream = e.Stream.ToPipeStream();
            if (stream.TryReadLine(out string line))
            {
                Number++;
                Console.WriteLine(line+ ""+Number);
                stream.WriteLine($"{DateTime.Now}");
                e.Stream.Flush();
            }
        }
    }
}
复制代码

3、客户端

复制代码
using BeetleX;
using BeetleX.Clients;
using System;
using System.Net.Sockets;
using System.Threading.Tasks;

namespace BTcpClient
{
    class Program
    {
        static void Main(string[] args)
        {
            Parallel.For(0, 10000, i =>
            {
                AsyncTcpClient client = SocketFactory.CreateClient<AsyncTcpClient>("127.0.0.1", 9090);
                client.ClientError = (o, e) =>
                {
                    Console.WriteLine("client error {0}@{1}", e.Message, e.Error);
                };
                client.DataReceive = (o, e) =>
                {
                    Console.WriteLine(e.Stream.ToPipeStream().ReadLine());
                };
                var pipestream = client.Stream.ToPipeStream();
                pipestream.WriteLine("hello BeetleX");
                client.Stream.Flush();
            });
          
            Console.Read();
        }
    }
}
复制代码

4、测试结果

模拟短时间内,建立10000个链接

 

posted @   天才卧龙  阅读(6)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
历史上的今天:
2021-12-03 微信小程序自定义导航栏
2020-12-03 使用脚手架搭建VUE项目
2019-12-03 AreaRegistration
2016-12-03 EF CodeFirst 如何通过配置自动创建数据库<当模型改变时>
点击右上角即可分享
微信分享提示