# QScomm **Repository Path**: qiansun/qscomm ## Basic Information - **Project Name**: QScomm - **Description**: 简单易用的高性能Socket 通信基础模块 - **Primary Language**: C# - **License**: GPL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2023-06-12 - **Last Updated**: 2023-06-12 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # QScomm #### 介绍 简单易用的高性能Socket 通信基础模块 #### 软件架构 Visual Studio 2022 C# .NET 6.0 #### 使用说明 启功解决方案中的 “TestSocket” 工程; Main 函数中共有4个性能测试代码,测试QScomm通信性能的同时,也一并示教了QScomm的使用方法。 ### 程序配置方法 在程序文件目录下 ..\TestSocket\bin\Debug\net6.0\QSconfig.xml 进行简洁的设定(给定的参考设定如下) ``` 192.168.153.1 1986 100 192.168.153.1 1986 ``` ### 服务器启动 Server端程序是静态函数,直接仿照如下方法进行。 ``` QScomm.Server.Server_Start(); QScomm.Server.evt_NewConnecting = (Client clt) => { clt.m_ReceiveEvent.evt_TextMessage = (Client obj, byte Subset_class, uint ChatNo, string msg) => { Console.WriteLine($"{obj.Get_LinkInfo}\tText-Message:{msg}"); }; clt.m_ReceiveEvent.evt_ByteArray = (Client obj, byte Subset_class, uint ChatNo, byte[] bytes) => { Console.WriteLine($"{obj.Get_LinkInfo}\tByte-Message:{Encoding.UTF8.GetString(bytes)}"); }; }; QScomm.Server.evt_CloseConnected = (Client clt) => { }; ``` 除了Clinet 的连接断开事件,还有获得连接中的Clients的列表获取等方法。 ### Client启动 Clinet 程序是非静态的,需要new 对象。 因为开始时已经在 QSconfig.xml中设定了要连接的Server IP 和 Port,所以Client new后直接连接目标Server ``` Client clt=new Client(); //启动 Client clt.ClientClose(); //关闭 Client ``` ### TestSocket 测试用例 (1)Client_ConnectCount_Test() 客户端连接数量测试,本机启动了16000个Client的连接测试, 3小时的运行观测,Server端保持着16000个连接的管理。 -- Client 与 Server 每5秒交互一下心跳包, -- Server端检测到连接,超过22秒静默,则主动断开连接,并在连接池中移除 (2)Text_Command_Test() 消息收发测试。 Client 与 Server 端相互主动发送消息, 消息接收到后,打印到窗口 (3)Message_Receive_WriteLog() 消息收发Log记录测试。 创建100个Client端。 每轮每个Client 发送一串信息,Server收到后回复同样的信息,所有的收发信息均Log写到日志文件中。 连续进行10轮这样的测试。 (4)Client_ConnectClose_Test() 客户端频繁通断测试 初始1000 个客户端连接。30分钟测试,不断有客户端断开,也有新的客户端发起连接。 共测试有三次,最终Server端连接保持数与测试最终的客户端数一致: | No | 新连接 | 断开 | 每秒通断 | |-----|-------|-------|------| | 第一次 | 48112 | 46299 | 52次 | | 第二次 | 46739 | 45212 | 51次 | | 第三次 | 54081 | 52138 | 59次 | #### 特技 1. 使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md 2. Gitee 官方博客 [blog.gitee.com](https://blog.gitee.com) 3. 你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解 Gitee 上的优秀开源项目 4. [GVP](https://gitee.com/gvp) 全称是 Gitee 最有价值开源项目,是综合评定出的优秀开源项目 5. Gitee 官方提供的使用手册 [https://gitee.com/help](https://gitee.com/help) 6. Gitee 封面人物是一档用来展示 Gitee 会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/)