编辑
2025-09-17
C#
00

目录

安装
基本用法
创建TCP服务器
HTTP服务器
WebSocket服务器
UDP服务器
结论

NetCoreServer是一个强大的.NET Core网络服务器库,专为构建高性能的TCP/UDP服务器和客户端而设计。它提供了一套简单而高效的API,使开发者能够轻松创建各种网络应用,如HTTP服务器、WebSocket服务器、TCP和UDP服务器等。

安装

要在你的.NET Core项目中使用NetCoreServer,你可以通过NuGet包管理器安装它。在Visual Studio的包管理器控制台中运行以下命令:

PowerShell
Install-Package NetCoreServer

image.png

基本用法

创建TCP服务器

让我们从一个简单的TCP服务器示例开始:

C#
using NetCoreServer; using System.Net.Sockets; namespace AppNetCoreServer { class EchoServer : TcpServer { public EchoServer(string address, int port) : base(address, port) { } protected override TcpSession CreateSession() { return new EchoSession(this); } protected override void OnError(SocketError error) { Console.WriteLine($"Echo server caught an error with code {error}"); } } class EchoSession : TcpSession { public EchoSession(TcpServer server) : base(server) { } protected override void OnReceived(byte[] buffer, long offset, long size) { string message = System.Text.Encoding.UTF8.GetString(buffer, (int)offset, (int)size); Console.WriteLine("Incoming: " + message); SendAsync(message); } protected override void OnError(SocketError error) { Console.WriteLine($"Echo session caught an error with code {error}"); } } internal class Program { static void Main(string[] args) { string address = "127.0.0.1"; int port = 3000; Console.WriteLine($"TCP server starting on port {port}..."); var server = new EchoServer(address, port); server.Start(); Console.WriteLine("Press Enter to stop the server or '!' to restart the server..."); for (; ; ) { string line = Console.ReadLine(); if (string.IsNullOrEmpty(line)) break; if (line == "!") { Console.Write("Server restarting..."); server.Restart(); Console.WriteLine("Done!"); } } Console.Write("Server stopping..."); server.Stop(); Console.WriteLine("Done!"); } } }

image.png

这个例子创建了一个简单的回显服务器,它会将接收到的任何消息发送回客户端。

HTTP服务器

NetCoreServer也支持创建HTTP服务器。以下是一个简单的HTTP服务器示例:

C#
using NetCoreServer; using System.Net.Sockets; namespace AppNetCoreServer { class HttpServer : NetCoreServer.HttpServer { public HttpServer(string address, int port) : base(address, port) { } protected override TcpSession CreateSession() { return new HttpSession(this); } protected override void OnError(SocketError error) { Console.WriteLine($"HTTP server caught an error with code {error}"); } } class HttpSession : NetCoreServer.HttpSession { public HttpSession(NetCoreServer.HttpServer server) : base(server) { } protected override void OnReceivedRequest(HttpRequest request) { Console.WriteLine($"Received request: {request.Method} {request.Url}"); // Respond with "Hello, World!" if (request.Method == "GET" && request.Url == "/") { var content = "Hello, World!"; var response = new HttpResponse(); response.SetBegin(200); response.SetBody(content); SendResponseAsync(response); } else { SendResponseAsync(Response.MakeErrorResponse()); } } protected override void OnReceivedRequestError(HttpRequest request, string error) { Console.WriteLine($"Request error: {error}"); } protected override void OnError(SocketError error) { Console.WriteLine($"HTTP session caught an error with code {error}"); } } internal class Program { static void Main(string[] args) { string address = "127.0.0.1"; int port = 8080; Console.WriteLine($"HTTP server starting on port {port}..."); var server = new HttpServer(address, port); server.Start(); Console.WriteLine("Press Enter to stop the server..."); Console.ReadLine(); Console.Write("Server stopping..."); server.Stop(); Console.WriteLine("Done!"); } } }

image.png

这个HTTP服务器会对根路径 ("/") 的GET请求响应 "Hello, World!"。

WebSocket服务器

NetCoreServer还支持WebSocket协议。以下是一个WebSocket服务器的示例:

C#
using System; using System.Text; using NetCoreServer; class WebSocketServer : WsServer { public WebSocketServer(string address, int port) : base(address, port) { } protected override TcpSession CreateSession() { return new WebSocketSession(this); } protected override void OnError(SocketError error) { Console.WriteLine($"WebSocket server caught an error with code {error}"); } } class WebSocketSession : WsSession { public WebSocketSession(WsServer server) : base(server) { } public override void OnWsConnected(HttpRequest request) { Console.WriteLine($"WebSocket session with Id {Id} connected!"); } public override void OnWsDisconnected() { Console.WriteLine($"WebSocket session with Id {Id} disconnected!"); } public override void OnWsReceived(byte[] buffer, long offset, long size) { string message = Encoding.UTF8.GetString(buffer, (int)offset, (int)size); Console.WriteLine($"Incoming: {message}"); SendTextAsync(message); } protected override void OnError(SocketError error) { Console.WriteLine($"WebSocket session caught an error with code {error}"); } } class Program { static void Main(string[] args) { string address = "127.0.0.1"; int port = 8080; Console.WriteLine($"WebSocket server starting on port {port}..."); var server = new WebSocketServer(address, port); server.Start(); Console.WriteLine("Press Enter to stop the server..."); Console.ReadLine(); Console.Write("Server stopping..."); server.Stop(); Console.WriteLine("Done!"); } }

image.png

这个WebSocket服务器会将接收到的任何消息回显给客户端。

UDP服务器

NetCoreServer也支持UDP协议。以下是一个简单的UDP服务器示例:

C#
using NetCoreServer; using System.Net; using System.Net.Sockets; using System.Text; namespace AppNetCoreServer { class EchoServer : UdpServer { public EchoServer(IPAddress address, int port) : base(address, port) { } protected override void OnStarted() { // Start receive datagrams ReceiveAsync(); } protected override void OnReceived(EndPoint endpoint, byte[] buffer, long offset, long size) { Console.WriteLine("Incoming: " + Encoding.UTF8.GetString(buffer, (int)offset, (int)size)); // Echo the message back to the sender SendAsync(endpoint, buffer, 0, size); } protected override void OnSent(EndPoint endpoint, long sent) { // Continue receive datagrams ReceiveAsync(); } protected override void OnError(SocketError error) { Console.WriteLine($"Echo UDP server caught an error with code {error}"); } } class Program { static void Main(string[] args) { string address = "127.0.0.1"; int port = 3000; Console.WriteLine($"UDP server starting on port {port}..."); var server = new EchoServer(IPAddress.Parse(address), port); server.Start(); for (; ; ) { string line = Console.ReadLine(); if (string.IsNullOrEmpty(line)) break; // Restart the server if (line == "!") { Console.Write("Server restarting..."); server.Restart(); Console.WriteLine("Done!"); } } Console.WriteLine("Press Enter to stop the server..."); Console.ReadLine(); Console.Write("Server stopping..."); server.Stop(); Console.WriteLine("Done!"); } } }

image.png

这个UDP服务器会将接收到的任何消息回显给发送者。

结论

NetCoreServer是一个功能强大且灵活的网络服务器库,适用于各种.NET Core网络应用场景。从简单的TCP/UDP服务器到复杂的HTTP和WebSocket应用,NetCoreServer都能胜任。它的高性能和丰富的功能使其成为.NET Core开发者构建网络应用的理想选择。

通过本文的示例和说明,你应该已经对NetCoreServer有了全面的了解。随着你在实际项目中的应用,你会发现NetCoreServer还有更多强大的特性等待你去探索。祝你在使用NetCoreServer构建网络应用的过程中coding愉快!

本文作者:技术老小子

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!