开放代码社区 › Weaving-Socket 通信交互框架

Weaving-Socket 通信交互框架

开发工具C#

基于 .NET Core 的 TCP 通信交互框架,内置 JSON、二进制与自定义协议,支持 TCP、WebSocket、UDP 及 SSL/TLS 加密,具备心跳检测与自动重连能力,并提供多平台客户端。适用于物联网、消息队列、即时通讯、移动通信等前后端交互场景。

Web后端前端工具数据库C#
作者:用户6868语言:C#更新:2026-10-27
仓库地址
https://gitee.com/dotnetchina/weaving-socket.git

前往原仓库

README

# 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

## 版权声明

版权所有 © 河南知真信息技术有限公司