一个.NET开源、快速、低延迟的异步套接字服务器和客户端库

程序员有二十年 2024-09-24 10:40:47

前言

最近有不少小伙伴在问:.NET有什么值得推荐的网络通信框架?今天大姚给大家分享一个.NET开源、免费(MIT License)、快速、低延迟的异步套接字服务器和客户端库:NetCoreServer。

项目介绍

NetCoreServer是一个.NET开源、免费(MIT License)、快速、低延迟的异步套接字服务器和客户端库。它支持多种协议,包括 TCP、SSL、UDP、Unix Domain Socket、HTTP、HTTPS 和 WebSocket,并且能够处理高达10K并发连接。通过提供对多种协议的支持和优化的网络 I/O 操作,它使开发人员能够轻松创建响应迅速且可扩展的网络应用程序。

主要特性跨平台:支持 Linux、MacOS 和 Windows。异步通信:利用异步编程模式提高性能和响应性。多协议支持:支持 TCP、SSL、UDP、Unix Domain Socket、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 服务器的实现,支持静态内容服务和自定义请求处理。使用示例基准测试项目源代码TCP 聊天服务器示例

以下是 TCP 聊天服务器的示例。它处理多个 TCP 客户端会话,并将从任何会话收到的消息多播到所有会话。也可以直接从服务器发送管理消息。

using System;using System.Net;using System.Net.Sockets;using System.Text;using NetCoreServer;namespace TcpChatServer{ ChatSession : TcpSession { public ChatSession(TcpServer server) : base(server) {} protected override void OnConnected() { Console.WriteLine($"Chat TCP session with Id {Id} connected!"); // Send invite message 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); // Multicast message to all connected sessions Server.Multicast(message); // If the buffer starts with '!' the disconnect the current sessionif (message == "!") Disconnect(); } protected override void OnError(SocketError error) { Console.WriteLine($"Chat TCP session caught an error with code {error}"); } } 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}"); } } Program { static void Main(string[] args) { // TCP server port int port = 1111;if (args.Length > 0) port = int.Parse(args[0]); Console.WriteLine($"TCP server port: {port}"); Console.WriteLine(); // Create a new TCP chat server var server = new ChatServer(IPAddress.Any, port); // Start the server Console.Write("Server starting..."); server.Start(); Console.WriteLine("Done!"); Console.WriteLine("Press Enter to stop the server or '!' to restart the server..."); // Perform text inputfor (;;) { string line = Console.ReadLine();if (string.IsOrEmpty(line))break; // Restart the serverif (line == "!") { Console.Write("Server restarting..."); server.Restart(); Console.WriteLine("Done!");continue; } // Multicast admin message to all sessions line = "(admin) " + line; server.Multicast(line); } // Stop the server Console.Write("Server stopping..."); server.Stop(); Console.WriteLine("Done!"); } }}项目源码地址

更多项目实用功能和特性欢迎前往项目开源地址查看👀,别忘了给项目一个Star支持💖。

开源地址:https://github.com/chronoxor/NetCoreServer在线文档:https://chronoxor.github.io/NetCoreServer
0 阅读:6

程序员有二十年

简介:感谢大家的关注