- VisualStudio2022插件的安装及使用-编程手把手系列文章
- pprof-在现网场景怎么用
- C#实现的下拉多选框,下拉多选树,多级节点
- 【学习笔记】基础数据结构:猫树
.NET 生态中有哪些值得推荐的网络通信框架?今天,给大家推荐一个非常优秀的开源项目——NetCoreServer.
NetCoreServer 是一款 .NET 开源、免费、快速且低延迟的异步套接字服务器和客户端库。无论是需要搭建高性能的服务端应用,还是开发高效的客户端程序,NetCoreServer 都能提供强大的支持.
NetCoreServer 是一个高性能、跨平台的异步套接字服务器和客户端库.
它支持多种传输协议,包括 TCP、SSL、UDP、HTTP、HTTPS 和 WebSocket,提供了丰富的网络通信功能.
该库的设计初衷是解决高并发和低延迟的网络通信需求,采用了异步通信模型,能够高效处理大量连接和数据传输.
提供了丰富的示例包括 TCP 聊天服务器、SSL 聊天服务器和 UDP 回显服务器等多种应用场景.
1、往返测试 。
2、组播测试 。
3、Web 服务器测试 。
它处理多个 TCP 客户端会话,并将从任何会话接收到的消息广播到所有会话。另外,还可以直接从服务器发送管理员消息.
namespace TcpChatServer { class ChatSession : TcpSession { public ChatSession(TcpServer server) : base(server) {} protected override void OnConnected() { Console.WriteLine($"Chat TCP session with Id {Id} connected!"); // 发送欢迎消息 string message = "Hello from TCP chat! Please send a message or '!' to disconnect the client!"; SendAsync(message); } protected override void OnDisconnected() { Console.WriteLine($"Chat TCP session with Id {Id} disconnected!"); } protected override void OnReceived(byte[] buffer, long offset, long size) { string message = Encoding.UTF8.GetString(buffer, (int)offset, (int)size); Console.WriteLine("Incoming: " + message); // 向所有已连接的会话广播消息 Server.Multicast(message); // 如果接收到的消息为 '!',则断开当前会话 if (message == "!") Disconnect(); } protected override void OnError(SocketError error) { Console.WriteLine($"Chat TCP session caught an error with code {error}"); } } class ChatServer : TcpServer { public ChatServer(IPAddress address, int port) : base(address, port) {} protected override TcpSession CreateSession() { return new ChatSession(this); } protected override void OnError(SocketError error) { Console.WriteLine($"Chat TCP server caught an error with code {error}"); } } class Program { static void Main(string[] args) { // TCP 服务器端口 int port = 1111; if (args.Length > 0) port = int.Parse(args[0]); Console.WriteLine($"TCP 服务器端口: {port}"); Console.WriteLine(); // 创建一个新的 TCP 聊天服务器 var server = new ChatServer(IPAddress.Any, port); // 启动服务器 Console.Write("服务器启动中..."); server.Start(); Console.WriteLine("完成!"); Console.WriteLine("按 Enter 停止服务器或输入 '!' 重启服务器..."); // 执行文本输入 for (;;) { string line = Console.ReadLine(); if (string.IsNullOrEmpty(line)) break; // 重启服务器 if (line == "!") { Console.Write("服务器重启中..."); server.Restart(); Console.WriteLine("完成!"); continue; } // 向所有会话广播管理员消息 line = "(admin) " + line; server.Multicast(line); } // 停止服务器 Console.Write("服务器停止中..."); server.Stop(); Console.WriteLine("完成!"); } } }
它连接到 TCP 聊天服务器,允许发送消息到服务器并接收新消息.
namespace TcpChatClient { class ChatClient : TcpClient { public ChatClient(string address, int port) : base(address, port) {} public void DisconnectAndStop() { _stop = true; DisconnectAsync(); while (IsConnected) Thread.Yield(); } protected override void OnConnected() { Console.WriteLine($"Chat TCP client connected a new session with Id {Id}"); } protected override void OnDisconnected() { Console.WriteLine($"Chat TCP client disconnected a session with Id {Id}"); //等待一段时间... Thread.Sleep(1000); // 尝试再次连接 if (!_stop) ConnectAsync(); } protected override void OnReceived(byte[] buffer, long offset, long size) { Console.WriteLine(Encoding.UTF8.GetString(buffer, (int)offset, (int)size)); } protected override void OnError(SocketError error) { Console.WriteLine($"Chat TCP client caught an error with code {error}"); } private bool _stop; } class Program { static void Main(string[] args) { // TCP 服务器地址 string address = "127.0.0.1"; if (args.Length > 0) address = args[0]; // TCP 服务器端口 int port = 1111; if (args.Length > 1) port = int.Parse(args[1]); Console.WriteLine($"TCP server address: {address}"); Console.WriteLine($"TCP server port: {port}"); Console.WriteLine(); // 创建一个新的 TCP 聊天客户端 var client = new ChatClient(address, port); // 连接客户端 Console.Write("Client connecting..."); client.ConnectAsync(); Console.WriteLine("Done!"); Console.WriteLine("Press Enter to stop the client or '!' to reconnect the client..."); // 执行文本输入 for (;;) { string line = Console.ReadLine(); if (string.IsNullOrEmpty(line)) break; // 断开客户端连接 if (line == "!") { Console.Write("Client disconnecting..."); client.DisconnectAsync(); Console.WriteLine("Done!"); continue; } // 将输入的文本发送到聊天服务器 client.SendAsync(line); } // 断开客户端连接 Console.Write("Client disconnecting..."); client.DisconnectAndStop(); Console.WriteLine("Done!"); } } }
以上只展示的部分示例,更多示例大家可以访问项目地址获取.
GitHub:https://github.com/chronoxor/NetCoreServer 。
在线文档:https://chronoxor.github.io/NetCoreServer 。
本文只展示部分功能和内容,如果您对项目感兴趣可以访问系统地址获取详细信息和体验.
希望本文能在.NET 网络通信方面为各位提供有益的帮助。期待大家在评论区留言交流,分享您的宝贵经验和建议.
如果你觉得这篇文章对你有帮助,不妨点个赞支持一下!你的支持是我继续分享知识的动力。如果有任何疑问或需要进一步的帮助,欢迎随时留言.
也可以加入微信公众号[DotNet技术匠] 社区,与其他热爱技术的同行一起交流心得,共同成长!优秀是一种习惯,欢迎大家留言学习! 。
最后此篇关于.NET高性能异步套接字库,支持多协议、跨平台、高并发的文章就讲到这里了,如果你想了解更多关于.NET高性能异步套接字库,支持多协议、跨平台、高并发的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
我是一名优秀的程序员,十分优秀!