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个链接
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 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 如何通过配置自动创建数据库<当模型改变时>