开放代码社区 › Weaving-Socket 通信交互框架
Weaving-Socket 通信交互框架
开发工具C#基于 .NET Core 的 TCP 通信交互框架,内置 JSON、二进制与自定义协议,支持 TCP、WebSocket、UDP 及 SSL/TLS 加密,具备心跳检测与自动重连能力,并提供多平台客户端。适用于物联网、消息队列、即时通讯、移动通信等前后端交互场景。
仓库地址
https://gitee.com/dotnetchina/weaving-socket.gitREADME
# Weaving-Socket
[English](https://gitee.com/dotnetchina/weaving-socket/blob/New/README.en.md) | [中文](https://gitee.com/dotnetchina/weaving-socket/blob/New/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](https://gitee.com/dotnetchina/weaving-socket/blob/New/LICENSE) 文件。
## 联系方式
- QQ 交流群:17375149
- 联系 QQ/微信:20573886
## 版权声明
版权所有 © 河南知真信息技术有限公司