littlebot
Published on 2025-04-03 / 0 Visits
0

【源码】基于C++和gRPC的单终端管理系统

项目简介

本项目是基于C++语言开发的服务端和客户端通信项目。采用带SSL的gRPC通信框架,实现服务端与客户端间的安全通信。主要功能为注册登录,采用单终端独占登录策略,即一个用户同一时间只能在一个设备上登录,切换终端登录时,其他已登录的终端会被踢出。服务端使用MySQL数据库存储用户信息,并用bcrypt对用户密码进行单向加密。同时运用bazel编译和管理项目,gtest进行单元测试编写。

项目的主要特性和功能

  1. 用C++编写服务端和客户端代码,确保高性能与稳定性。
  2. 采用gRPC通信框架实现服务端与客户端的通信。
  3. 运用SSL加密通信,保障数据传输安全。
  4. 实现注册和登录功能,支持用户密码的加密存储与验证。
  5. 采用单终端独占登录策略,保证用户同一时间仅能在一个设备登录。
  6. 使用MySQL数据库存储用户信息,支持数据持久化。
  7. 用bcrypt对用户密码进行单向加密,提升数据安全性。
  8. 利用bazel编译和管理项目,提高开发效率。
  9. 使用gtest编写单元测试,提高代码质量和可维护性。

安装使用步骤

假设用户已下载本项目的源码文件,按以下步骤操作: 1. 执行建库语句 sql DROP TABLE IF EXISTS `user_info`; CREATE TABLE `user_info` ( `id` int(11) NOT NULL AUTO_INCREMENT, `username` varchar(255) NOT NULL, `password` varchar(255) NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `idx_username` (`username`) USING BTREE ) ENGINE=InnoDB AUTO_INCREMENT=50001 DEFAULT CHARSET=latin1; 2. 修改数据库地址:打开app_server.cpp,修改以下内容 cpp Db *db = new Db("db",3306,"root","545347837","test"); 参数依次为数据库地址、数据库端口、登录用户、密码、实例名称。 3. 编译项目:回到WORKSPACE项目目录,执行命令(cmake后面的点不能去掉) sh bazel build main:all 4. 生成通信秘钥:由于项目使用了SSL进行通信加密,需生成公私钥,依次执行下述语句 sh mkdir -p /home/config/client mkdir -p /home/config/server cd /home/config openssl genrsa -passout pass:123 -des3 -out ca.key 4096 openssl req -passin pass:123 -new -x509 -days 365 -key ca.key -out ca.crt -subj "/C=CN/ST=CA/L=Cupertino/O=YourCompany/OU=YourApp/CN=MyRootCA" openssl genrsa -passout pass:123 -des3 -out server.key 4096 openssl req -passin pass:123 -new -key server.key -out server.csr -subj "/C=CN/ST=CA/L=Cupertino/O=YourCompany/OU=YourApp/CN=localhost" openssl x509 -req -passin pass:123 -days 365 -in server.csr -CA ca.crt -CAkey ca.key -set_serial 01 -out server.crt openssl rsa -passin pass:123 -in server.key -out server.key openssl genrsa -passout pass:123 -des3 -out client.key 4096 openssl req -passin pass:123 -new -key client.key -out client.csr -subj "/C=CN/ST=CA/L=Cupertino/O=YourCompany/OU=YourApp/CN=FengJun" openssl x509 -passin pass:123 -req -days 365 -in client.csr -CA ca.crt -CAkey ca.key -set_serial 01 -out client.crt openssl rsa -passin pass:123 -in client.key -out client.key mv client_privatmv client_privatekey.pem client/ mv client_self_signed_crt.pem client/ mv server_self_signed_crt.pem client/ mv client_self_signed_crt.pem server/ mv server_privatekey.pem server/ mv server_self_signed_crt.pem server/ 服务端和客户端默认读取/home/config/下的文件。 5. 运行项目 - 服务端:./bazel-bin/main/app_server - 客户端:./bazel-bin/main/app_client

下载地址

点击下载 【提取码: 4003】【解压密码: www.makuang.net】