# weaving-socket **Repository Path**: dotnetchina/weaving-socket ## Basic Information - **Project Name**: weaving-socket - **Description**: 支持.NET,core, U3D,物联网,web,通用,网关 socket通讯,架构带有内置协议,保证数据完整. nuget可搜索包Weave.TCPClient与Weave.Server - **Primary Language**: C# - **License**: Not specified - **Default Branch**: New - **Homepage**: https://gitee.com/UDCS - **GVP Project**: Yes ## Statistics - **Stars**: 1145 - **Forks**: 215 - **Created**: 2015-12-21 - **Last Updated**: 2026-10-19 ## Categories & Tags **Categories**: web-dev-toolkits **Tags**: None ## README # Weaving-Socket [English](./README.en.md) | [中文](./README.md) ## 项目简介 Weaving-Socket 是以 .NET Core 为基础设计的基于 TCP 通信的交互框架,是编写物联网、消息队列、WebSocket 应用、移动通信应用、即时通讯(IM)等应用的完美选择。 该框架支持规范化的前后端交互处理,可支持 B/S、C/S、手机移动端等标准化的通信方式。 > **与其他架构的区别**:除了统一数据接收外,框架自带内置协议,保证数据完整性。 ## 主要特性 - **多协议支持** - Json:内置 JSON 协议 - Bytes:内置二进制协议 - Custom:自定义协议(原始数据) - **多通信协议支持** - Socket (TCP):TCP 套接字通信 - WebSocket:WebSocket 通信 - UDP:UDP 通信 - **SSL/TLS 加密支持** - 支持 SSL 证书加密通信 - **心跳检测与自动重连** - 内置心跳机制,支持超时自动重连 - **多平台客户端支持** - .NET Core / .NET Framework - Unity3D - Python - Android/Java - Lua ## 架构组件 ### 核心包 | 包名 | 说明 | |------|------| | `Weave.Base.Core` | 核心类库,包含基础数据结构和协议处理 | | `Weave.Server.Core` | 服务端开发包 | | `Weave.TCPClient.Core` | 异步客户端开发包 | | `Weave.TcpSynClient` | 同步客户端开发包 | | `Weave.Cloud.Core` | 云端/网关组件 | ### 服务端类 - `WeaveP2Server`:Socket 服务端 - `WeaveWebServer`:WebSocket 服务端 - `WeaveUDPServer`:UDP 服务端 - `HttpServer`:HTTP 协议服务 ### 客户端类 - `P2Pclient`:异步客户端 - `WeaveUDPclient`:UDP 客户端 - `DTUclient`:DTU(数据传输单元)客户端 - `TcpSynClient`:同步客户端 ## 安装 ### NuGet 包 ``` Weave.Server # 服务端 Weave.TCPClient # 异步客户端 Weave.TcpSynClient # 同步客户端 ``` 通过 NuGet 包管理器安装: ```powershell Install-Package Weave.Server Install-Package Weave.TCPClient Install-Package Weave.TcpSynClient ``` ## 快速开始 ### 服务端示例 ```csharp using Weave.Base; using Weave.Server; // 创建 TCP 服务端,使用 Bytes 协议 WeaveP2Server server = new WeaveP2Server(WeaveDataTypeEnum.Bytes); // 注册接收事件 server.waveReceiveEvent += Server_receiveevent; // 注册连接/断开事件(可选) server.weaveUpdateSocketListEvent += Server_weaveUpdateSocketListEvent; server.weaveDeleteSocketListEvent += Server_weaveDeleteSocketListEvent; // 启动监听 server.start(8989); Console.WriteLine("服务器已启动,监听端口: 8989"); Console.ReadKey(); private static void Server_receiveevent(byte command, string data, Socket soc) { Console.WriteLine($"收到指令: {command}, 数据: {data}"); // 处理接收到的数据 } private static void Server_weaveUpdateSocketListEvent(Socket soc) { Console.WriteLine("客户端连接"); } private static void Server_weaveDeleteSocketListEvent(Socket soc) { Console.WriteLine("客户端断开"); } ``` ### 异步客户端示例 ```csharp using Weave.TCPClient; using Weave.Base; // 创建异步客户端 P2Pclient client = new P2Pclient(DataType.bytes); // 注册事件 client.timeoutevent += Client_timeoutevent; client.receiveServerEvent += Client_receiveServerEvent; // 连接到服务器 client.start("127.0.0.1", 8989, false); // 发送数据 (指令 0x01) client.send(0x01, "test2017-5-5"); Console.ReadKey(); private static void Client_receiveServerEvent(byte command, string text) { // 处理服务器返回的数据 Console.WriteLine($"收到指令: {command}, 数据: {text}"); } private static void Client_timeoutevent() { // 连接超时或断线处理 client.Restart(false); // 重新连接 } ``` ### 同步客户端示例 ```csharp using Weave.Client; TcpSynClient tcpSynClient = new TcpSynClient(DataType.bytes, "127.0.0.1", 9903); tcpSynClient.Start(); tcpSynClient.Send(0x01, "asdasd"); // 发送请求 while(true) { var commdata = tcpSynClient.Receives(null); // 等待回执 } ``` ### WebSocket 服务端 ```csharp // 只需将 WeaveP2Server 替换为 WeaveWebServer WeaveWebServer server = new WeaveWebServer(WeaveDataTypeEnum.Json); server.waveReceiveEvent += Server_receiveevent; server.start(11001); ``` ### UDP 服务端 ```csharp // 只需将 WeaveP2Server 替换为 WeaveUDPServer WeaveUDPServer server = new WeaveUDPServer(WeaveDataTypeEnum.Bytes); server.WaveReceiveEvent += Server_receiveevent; server.Start(8989); ``` ## 发送数据 ### 服务端发送 ```csharp // 发送字符串数据 server.Send(socket, command, "message"); // 发送字节数据 server.Send(socket, command, byteArray); ``` ### 客户端发送 ```csharp // 发送字符串数据 client.send(command, "message"); // 发送字节数据 client.send(command, byteArray); ``` ## 事件说明 ### 服务端事件 | 事件名 | 说明 | 适用协议 | |--------|------|----------| | `waveReceiveEvent` | JSON 数据接收事件 | Json | | `weaveReceiveBitEvent` | Bytes/Custom 数据接收事件 | Bytes, Custom | | `WeaveReceiveSslEvent` | SSL 加密接收事件 | SSL | | `weaveUpdateSocketListEvent` | 客户端连接上线事件 | All | | `weaveDeleteSocketListEvent` | 客户端断开连接事件 | All | ### 客户端事件 | 事件名 | 说明 | 适用协议 | |--------|------|----------| | `ReceiveServerEvent` | JSON 数据接收事件 | Json | | `ReceiveServerEventbit` | Bytes/Custom 数据接收事件 | Bytes, Custom | | `Timeoutevent` | 超时/断线事件 | All | | `ErrorMge` | 错误事件 | All | ## 协议说明 框架使用自定义协议确保数据完整性: - **指令范围**:0x00 - 0xFF - **保留指令**:0x9C 和 0xFF(系统保留) - **心跳指令**:0x99 ## 相关项目 - **WeaveMicro** - 微服务架构:https://gitee.com/dotnetchina/weave-micro - **WeavingDB** - 轻量级内存数据库:https://gitee.com/UDCS/WeavingDB - **WsocketAutoUpPrj** - 软件自动升级示例:https://gitee.com/UDCS/WsocketAutoUpPrj ## 更多客户端示例 - [Lua 客户端示例](https://gitcode.com/dreamsfly9001/weaving-socket/tree/New/luat%E5%AE%A2%E6%88%B7%E7%AB%AF%E4%BB%A3%E7%A0%81) - [Python 客户端示例](https://gitcode.com/dreamsfly9001/weaving-socket/tree/New/python%E5%AE%A2%E6%88%B7%E7%AB%AF%E4%BB%A3%E7%A0%81) - [Android/Java 客户端示例](https://gitcode.com/dreamsfly9001/weaving-socket/tree/New/android%E5%AE%A2%E6%88%B7%E7%AB%AF%E4%BB%A3%E7%A0%81) - [WebSocket JavaScript 客户端](https://gitcode.com/dreamsfly9001/weaving-socket/blob/New/Code/test/WEB%20JS%E5%BA%93/websocket.js) ## 许可证 本项目遵循 MIT 许可证,详见 [LICENSE](./LICENSE) 文件。 ## 联系方式 - QQ 交流群:17375149 - 联系 QQ/微信:20573886 ## 版权声明 版权所有 © 河南知真信息技术有限公司