From c4d23ecda47ade5de6be05b78539e7ad294d5ce6 Mon Sep 17 00:00:00 2001 From: gitee-bot Date: Fri, 12 Sep 2025 00:48:25 +0000 Subject: [PATCH] Update README.md --- README.md | 87 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 87 insertions(+) diff --git a/README.md b/README.md index e69de29..2708f1f 100644 --- a/README.md +++ b/README.md @@ -0,0 +1,87 @@ +# Longbow.TcpSocket + +`Longbow.TcpSocket` 是一个基于 .NET 平台的 TCP 套接字通信库,提供了简单易用的 API 来进行异步 TCP 通信。它支持自动接收、自动重连、数据包适配器等功能,适用于构建高性能的网络通信应用。 + +## 特性 + +- **异步通信**:使用 `ValueTask` 提供高性能的异步 TCP 通信。 +- **自动接收**:支持自动接收数据流,简化数据处理逻辑。 +- **自动重连**:在连接断开后可以自动尝试重新连接。 +- **数据包适配器**:支持自定义数据包解析逻辑,处理粘包、分包等问题。 +- **日志支持**:可选的日志记录功能,便于调试和监控。 +- **依赖注入集成**:与 .NET 依赖注入框架无缝集成。 + +## 安装 + +你可以通过 NuGet 安装 `Longbow.TcpSocket`: + +```bash +dotnet add package Longbow.TcpSocket +``` + +## 使用示例 + +### 创建 TCP 客户端并连接服务器 + +```csharp +using Longbow.TcpSocket; + +var client = new DefaultTcpSocketClient(new TcpSocketClientOptions +{ + IsAutoReconnect = true, + ReconnectInterval = 5000, + EnableLog = true +}); + +client.OnConnected = async () => +{ + Console.WriteLine("Connected to server."); + await client.SendAsync("Hello, Server!"u8.ToArray()); +}; + +client.ReceivedCallback = async (data) => +{ + Console.WriteLine($"Received: {Encoding.UTF8.GetString(data)}"); +}; + +await client.ConnectAsync(new IPEndPoint(IPAddress.Parse("127.0.0.1"), 8080)); +``` + +### 使用数据包适配器处理自定义数据格式 + +```csharp +client.AddDataPackageAdapter(new MyDataPackageAdapter(), async (data) => +{ + Console.WriteLine($"Processed data: {data}"); +}); +``` + +### 使用依赖注入 + +在 `Startup.cs` 或 `Program.cs` 中注册服务: + +```csharp +services.AddTcpSocketFactory(); +``` + +然后通过 `ITcpSocketFactory` 获取或创建客户端实例: + +```csharp +var factory = serviceProvider.GetRequiredService(); +var client = factory.GetOrCreate("myClient", options => +{ + options.IsAutoReconnect = true; +}); +``` + +## 贡献 + +欢迎贡献代码和反馈意见!请参阅 [CONTRIBUTING.md](CONTRIBUTING.md) 获取更多信息。 + +## 许可证 + +本项目采用 [MIT License](LICENSE),请参阅许可证文件以获取详细信息。 + +## 联系我们 + +如果你有任何问题或建议,请提交 [Issue](https://gitee.com/LongbowEnterprise/Longbow.TcpSocket/issues) 或联系项目维护者。 \ No newline at end of file -- Gitee