c# 高性能大并发 socket 异步、同步通信库,建立独立的发送缓冲池和接收缓冲池解决发送和接收不断分配缓冲区问题,主要功能模块:
支持.net core和.net framework 。
tcp客户端和服务端,客户端分为同步和异步通信连接;
udp客户端服务端,客户端分为同步和异步通信连接;
数据包通信协议独立模块,帮助使用者提供数据包格式定制。
数据包解析独立模块;
客户端连接管理池模块;
测试:
简单测试结果单个连接实例收发10w个数据包程序内存消耗在4MB左右,每秒稳定传输256mb的数据量,峰值在512MB左右浮动,根据网络和网卡有所误差,请以实际环境为主,一切尽在 demo 中,例子:
using NetProviderFactory; class Program { static void Main(string[] args) { int port = 13145; //服务端 INetServerProvider serverSocket = NetServerProvider.CreateProvider(); //直接返回缓冲区和接收到的偏移 serverSocket.ReceiveOffsetHanlder = new OnReceiveOffsetHandler((sToken, buffer, offset, cnt) => { Console.WriteLine("offset:from client[" + Encoding.UTF8.GetString(buffer,offset,cnt)); }); bool isOk=serverSocket.Start(port); if (isOk) { Console.WriteLine("已启动服务。。。"); //客户端 NetClientProvider clientSocket = NetClientProvider.CreateProvider(); //异步接收数据例子 clientSocket.ReceiveHanlder = new OnReceiveHandler((sToken, buffer) => { Console.WriteLine("client:from server[" + Encoding.UTF8.GetString(buffer)); }); //异步连接 bool isOk= clientSocket.ConnectTo(port, "127.0.0.1"); if(isOk){ clientSocket.Send(Encoding.UTF8.GetBytes("hello" + DateTime.Now)); } //同步连接和发送接收数据例子 if (clientSocket.ConnectSync(port, "127.0.0.1")) { clientSocket.SendSync(Encoding.UTF8.GetBytes("I'm client" + DateTime.Now), (recCnt, buffer) => { Console.WriteLine("client:from server[" + Encoding.UTF8.GetString(buffer, 0, recCnt)); }); } } Console.ReadKey(); } }