# CSharp_NetworkProtocol_Research **Repository Path**: qq28069933146_admin/csharp_networkprotocol_research ## Basic Information - **Project Name**: CSharp_NetworkProtocol_Research - **Description**: C#_网络协议研究(原github Net5-Web-APIs-Demo与Net5-Web-APIs-TestTools项目) 研究的协议包括TCP、UDP、Socket、Webservice、WCF、WebAPI、MQTT - **Primary Language**: C# - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 28 - **Forks**: 18 - **Created**: 2023-03-07 - **Last Updated**: 2025-08-27 ## Categories & Tags **Categories**: Uncategorized **Tags**: 网络协议, TCPUDP, Socket, webservice, wcf ## README # C# 网络协议研究项目文档 ## 项目介绍 本项目原名为 `Net5-Web-APIs-Demo` 和 `Net5-Web-APIs-TestTools`,旨在研究和实现 C# 中的多种网络协议,包括: - TCP - UDP - Socket - WebService - WCF - WebAPI - MQTT 该项目包含多个模块,分别用于实现和测试上述协议。项目文档和代码结构旨在帮助开发者理解如何在 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 私信或评论区留言。