前言
.NET 生态中有哪些值得保举的网络通信框架?今天,给各人保举一个非常优秀的开源项目——NetCoreServer。
NetCoreServer 是一款 .NET 开源、免费、快速且低耽误的异步套接字服务器和客户端库。无论是需要搭建高性能的服务端应用,照旧开辟高效的客户端程序,NetCoreServer 都能提供强大的支持。
项目介绍
NetCoreServer 是一个高性能、跨平台的异步套接字服务器和客户端库。
它支持多种传输协议,包罗 TCP、SSL、UDP、HTTP、HTTPS 和 WebSocket,提供了丰富的网络通信功能。
该库的设计初衷是解决高并发和低耽误的网络通信需求,采用了异步通信模子,能够高效处理大量连接和数据传输。
提供了丰富的示例包罗 TCP 聊天服务器、SSL 聊天服务器和 UDP 回显服务器等多种应用场景。
项目特性
- 跨平台:支持 Linux、macOS 和 Windows。
- 异步通信:使用异步编程模式提高性能和响应性。
- 多协议支持:支持 TCP、SSL、UDP、HTTP、HTTPS 和 WebSocket 协议。
- 高性能:专为高性能通信设计,通过减少不必要的内存分配和 CPU 占用,以及优化网络 I/O 操作来提高性能。
- 详细文档和示例:提供详细的文档和丰富的示例代码,资助各人快速上手。
项目组件
- TcpServer/TcpClient:用于处理 TCP 连接。
- SslServer/SslClient:提供 SSL/TLS 加密的 TCP 连接。
- UdpServer/UdpClient:支持 UDP 数据报传输。
- WsServer/WsClient:支持 WebSocket 通信。
- WssServer/WssClient:支持安全的 WebSocket(WebSocket Secure)通信。
- UdsServer/UdsClient:支持 Unix Domain Socket 通信(仅限 Unix/Linux 系统)。
- HttpServer/HttpClient:提供 HTTP 和 HTTPS 服务器的实现,支持静态内容服务和自定义哀求处理。
项目环境
- 操作系统:Linux、macOS、Windows
- 开辟环境:.NET 6.0、7-Zip、CMake、Git、Visual Studio
项目示例
- TCP 聊天服务器、聊天客户端
- SSL 聊天服务器、聊天客户端
- UDP 回显服务器、回显客户端
- UDP 组播服务器、组播客户端
- Unix Domain Socket 聊天服务器、聊天客户端
- 简单协议
- 简单协议服务器、简单协议客户端
- HTTP/HTTPS服务器、客户端
- WebSocket 聊天服务器、聊天客户端
- WebSocket 安全聊天服务器、安全聊天客户端
性能测试
1、往返测试
- TCP/SSL/UDP 回显服务器
- Unix Domain Socket 回显服务器
- 简单协议服务器
- WebSocket 回显服务器/安全回显服务器
2、组播测试
- TCP/SSL/UDP 组播服务器
- Unix Domain Socket 组播服务器
- WebSocket 组播服务器/安全组播服务器
3、Web 服务器测试
项目使用
1、TCP 聊天服务器
它处理多个 TCP 客户端会话,并将从任何会话接收到的消息广播到所有会话。别的,还可以直接从服务器发送管理员消息。2、TCP 聊天客户端
它连接到 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技术匠] 社区,与其他热爱技术的同行一起交流心得,共同发展!优秀是一种习惯,欢迎各人留言学习!
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |