diff --git a/README.md b/README.md index a6928f87dd98df5b699bf6b3b3976f0d9817e5c8..4dca513e890234f961b524b5a0322a3315850860 100644 --- a/README.md +++ b/README.md @@ -1,11 +1,160 @@ -# CSharp_NetworkProtocol_Research +# C# 网络协议研究项目文档 -#### 介绍 -C#_网络协议研究(原github Net5-Web-APIs-Demo与Net5-Web-APIs-TestTools项目) +## 项目介绍 -研究的协议包括TCP、UDP、Socket、Webservice、WCF、WebAPI、MQTT +本项目原名为 `Net5-Web-APIs-Demo` 和 `Net5-Web-APIs-TestTools`,旨在研究和实现 C# 中的多种网络协议,包括: +- TCP +- UDP +- Socket +- WebService +- WCF +- WebAPI +- MQTT -#### 软件架构 -博文地址:C#-Socket_TCP、Socket_UDP、WebSocket、WebService、WCF、WebAPI、MQTT的基础 -视频演示:https://www.bilibili.com/video/BV1vM4y1B7jN/?vd_source=3f52ff89411950a529a4b03056f38f16 +该项目包含多个模块,分别用于实现和测试上述协议。项目文档和代码结构旨在帮助开发者理解如何在 C# 中使用这些协议进行通信和数据交互。 + +## 博文与视频资源 + +- **博文地址**:[C#-Socket_TCP、Socket_UDP、WebSocket、WebService、WCF、WebAPI、MQTT的基础](https://www.cnblogs.com/qq2806933146xiaobai/p/15378767.html) +- **视频演示**:[Bilibili 视频链接](https://www.bilibili.com/video/BV1vM4y1B7jN/?vd_source=3f52ff89411950a529a4b03056f38f16) + +## 项目结构概览 + +### 1. `Net5-Web-APIs-Demo` 模块 + +该模块主要包含以下子项目: + +#### 1.1 ASP.NET Core Web API 示例 + +- **功能**:提供了一个基于 ASP.NET Core 的 Web API 示例,演示了基本的 HTTP 方法(GET、POST、PUT、DELETE)。 +- **控制器**: + - `ValuesTestController.cs`:演示了简单的 API 方法。 + - `WeatherForecastController.cs`:演示了数据模型的序列化和反序列化。 + +#### 1.2 WebSocket 服务器 + +- **功能**:实现了一个 WebSocket 服务器,支持客户端连接和消息广播。 +- **控制器**: + - `SocketAPIController.cs`:处理 WebSocket 连接。 +- **辅助类**: + - `WebSocketsHelper.cs`:提供 WebSocket 的 Echo 和聊天室功能。 + +#### 1.3 MQTT 服务器与客户端 + +- **功能**:使用 `MQTTHelper.cs` 实现了 MQTT 服务器和客户端,支持发布/订阅模式。 +- **功能点**: + - 创建和启动 MQTT 服务器。 + - 创建和连接 MQTT 客户端。 + - 订阅和发布消息。 + - 客户端连接、断开、消息接收等事件处理。 + +#### 1.4 TCP/UDP 通信 + +- **功能**:实现 TCP 和 UDP 通信的客户端和服务器端。 +- **类**: + - `TCPHelper.cs`:封装了 TCP 服务器和客户端的通信逻辑。 + - `UDPHelper.cs`:封装了 UDP 通信逻辑。 +- **窗体**: + - `TCPWin.cs` 和 `UDPWin.cs`:提供图形界面用于测试 TCP 和 UDP 通信。 + +#### 1.5 WebService 示例 + +- **功能**:提供了一个简单的 WebService 示例,包含基本的 Web 方法(如 `HelloWorld`, `Add`, `Sub`)。 +- **文件**: + - `WebService1.asmx.cs`:定义 WebService 方法。 + - `DataSetTB1.xsd`:定义数据集结构,用于 WebService 数据交互。 + +#### 1.6 WinSocketServer + +- **功能**:实现了一个基于 WebSocket 的服务器,支持客户端连接、消息广播等功能。 +- **类**: + - `WinSocketServer1.cs`:主窗体,处理服务器启动、停止、消息广播等。 + - `RequestMsg.cs`:定义请求消息格式。 + - `RequestProcessing.cs`:处理客户端请求。 + +### 2. `Net5-Web-APIs-TestTools` 模块 + +该模块主要用于测试和调试上述协议的实现。 + +#### 2.1 Socket、WebService、WCF、WebAPI 测试工具 + +- **功能**:提供图形界面工具,用于测试 TCP、UDP、WebSocket、WebService、WCF 和 WebAPI 的通信。 +- **主要窗体**: + - `SocketAPITest.cs`:测试 WebSocket 通信。 + - `WinSockerServer1Test.cs`:测试 TCP 通信。 + - `WebserviceFrom.cs`:测试 WebService 调用。 + - `WCFForm.cs`:测试 WCF 服务调用。 + - `GetRequest.cs`, `PostRequest.cs`, `PutRequest.cs`, `DeleteRequest.cs`:测试 HTTP 请求。 + +#### 2.2 MQTT 客户端测试工具 + +- **功能**:提供 MQTT 客户端测试界面,支持连接、订阅、发布消息。 +- **类**: + - `MQTTHelper.cs`:封装 MQTT 客户端逻辑。 + - `MqttNetClientWin.cs`:图形界面,用于测试 MQTT 客户端功能。 + +#### 2.3 数据工具类 + +- **功能**:提供通用的数据处理工具,如 `DataSet` 转换为 `IList`。 +- **类**: + - `DataTools.cs`:包含 `DataSetToIList` 方法。 + - `JsonfileTools.cs`:提供 JSON 文件的读写功能。 + +## 使用说明 + +### 1. 运行 Web API 服务 + +- 打开 `Net5-Web-APIs-Demo/ASP.NETCoreWebAPI` 项目。 +- 启动项目后,访问 `/api/values` 或 `/api/weatherforecast` 测试 API。 + +### 2. 运行 WebSocket 服务器 + +- 打开 `Net5-Web-APIs-Demo/WebAPIWebSockets` 项目。 +- 启动后,访问 `/wsTest` 进行 WebSocket 测试。 + +### 3. 运行 MQTT 服务器和客户端 + +- **服务器**:运行 `MqttnetServerWin` 项目,启动 MQTT 服务器。 +- **客户端**:运行 `MqttNetClient` 项目,连接服务器并进行订阅/发布测试。 + +### 4. 运行 TCP/UDP 测试工具 + +- **TCP 测试**:运行 `TCPWin` 窗体,测试 TCP 通信。 +- **UDP 测试**:运行 `UDPWin` 窗体,测试 UDP 通信。 + +### 5. 运行 WebService/WCF 测试工具 + +- 打开 `WebserviceWcfWebAPITestTool` 项目。 +- 使用 `WebserviceFrom.cs` 和 `WCFForm.cs` 测试 WebService 和 WCF 调用。 + +### 6. 运行 HTTP 请求测试工具 + +- 使用 `GetRequest.cs`, `PostRequest.cs`, `PutRequest.cs`, `DeleteRequest.cs` 测试 HTTP 请求。 + +## 开发环境 + +- **开发语言**:C# +- **框架**:.NET 5 +- **IDE**:Visual Studio 2019 或更高版本 +- **依赖库**: + - `MQTTnet`:用于 MQTT 通信。 + - `System.Net.WebSockets`:用于 WebSocket 通信。 + - `System.ServiceModel`:用于 WCF 服务调用。 + +## 贡献指南 + +欢迎贡献代码或提出建议。请遵循以下步骤: + +1. Fork 本项目。 +2. 创建新分支。 +3. 提交更改。 +4. 创建 Pull Request。 + +## 许可证 + +本项目遵循 MIT 许可证。详见项目根目录下的 `LICENSE` 文件。 + +## 联系方式 + +如有问题或建议,请通过 Gitee 私信或评论区留言。 \ No newline at end of file