基于protobuf和httplib的在线通讯录项目框架|Protobuf应用小项目
前言
那么这里博主先安利一些干货满满的专栏了!
首先是博主的高质量博客的汇总,这个专栏里面的博客,都是博主最最用心写的一部分,干货满满,希望对大家有帮助。
高质量博客汇总
https://blog.csdn.net/yu_cblog/category_12379430.html
项目简介
本项目是博主在学习protobuf的同时,顺便学用了一下httplib做的,技术含量不算特别高。不过我也封装好分享给大家了。希望大家能学到东西。
项目地址
README
An online address book project framework based on protobuf and httplib
基于protobuf和httplib的在线通讯录项目框架。
最新更新日期
2023年8月20日
项目需求
P将实现一个网络版本的通讯录,模拟实现客户端与服务端的交互,通过 Protobuf 来实现各端之间的协议序列化。
需求如下:
客户端可以选择对通讯录进行以下操作:
新增一个联系人
删除一个联系人
查询通讯录列表
查询一个联系人的详细信息
服务端提供增、删、查能力,并需要持久化通讯录。
客户端、服务端间的交互数据使用 Protobuf 来完成
注意:鉴于作者只是利用本项目学习和使用P融通部分工具,因此,本Github仓库中只完成了项目框架,没有实现整个项目。后续作者会继续更新和完善此项目。
完整项目可见另一位作者:protobuf: protobuf 教学仓库 - Gitee.com
本仓库完成内容:
搭建了客户端和服务端的基本框架
实现了使用protobuf新增联系人的功能,但暂时没有实现联系人功能的本地存储,只实现了服务端stdout的信息打印。
项目使用httplib库作为服务器,地址:GitHub - yhirose/cpp-httplib: A C++ header-only HTTP/HTTPS server and client libraryA C++ header-only HTTP/HTTPS server and client library - GitHub - yhirose/cpp-httplib: A C++ header-only HTTP/HTTPS server and client library
https://github.com/yhirose/cpp-httplib。有兴趣的读者,可以下载我另一个仓库中的Reactor服务器作为底层来使用:GitHub - Yufccode/Reactor-based-HyperWebServer: A high-performance web server based on the multiplexer actor mode, with an underlying implementation using the epoll modelA high-performance web server based on the multiplexer actor mode, with an underlying implementation using the epoll model - GitHub - Yufccode/Reactor-based-HyperWebServer: A high-performance web server based on the multiplexer actor mode, with an underlying implementation using the epoll model
https://github.com/Yufccode/Reactor-based-HyperWebServer
项目运行
目录结构

升级GCC
如果使用 centOS 环境,yum源带的g++ 最新版本是4.8.5,发布于2015年,年代久远。编译该项目会出现异常。将 gcc/g++ 升级为更高版本可解决问题。
Protobuf安装
参考博客:http://t.csdn.cn/FMs7G
http://t.csdn.cn/FMs7G
运行项目
准备好环境之后就可以直接make Client和Server里面的makefile进行客户端和服务端的运行。
基于protobuf和httplib的在线通讯录项目框架|Protobuf应用小项目的更多相关文章
- 基于Asp.net core + EF + Sqlite 5分钟快速上手一个小项目
虽然该方法不会用在实际开发中,但该过程对于初学者还是非常友好的,真应了麻雀虽小,五脏俱全这句话了.好了不多废话了,直接开始!! 1.建立一个名为test的Asp.net core web应用程序 这一 ...
- Scrapy框架简介及小项目应用
今天来总结一下Scrapy框架的用法.scrapy的架构如下: Engine :引擎,处理整个系统的数据流处理.触发事务,是整个框架的核心. Items :项目,它定义了爬取结果的数据结构,爬取的数 ...
- Visual-platform,基于Vue的可视化大屏开发GUI框架
visual-platform 基于Vue的可视化大屏开发GUI框架 ------ CreatedBy 漆黑小T 构建用于开发可视化大屏项目的自适应布局的GUI框架. github仓库: https: ...
- MongoDB从入门到实战之.NET Core使用MongoDB开发ToDoList系统(1)-后端项目框架搭建
前言: 前面的四个章节我们主要讲解了MongoDB的相关基础知识,接下来我们就开始进入使用.NET7操作MongoDB开发一个ToDoList系统实战教程. MongoDB从入门到实战的相关教程 Mo ...
- ng-cli搭建angular项目框架
原文地址 https://www.jianshu.com/p/0a8f4b0f29b3 环境准备 以下步骤都不需要事先创建文件夹,只是环境的准备过程,只有到需要搭建项目的时候才需要创建文件夹用来存放项 ...
- java客房管理小项目,适合java小白练手的项目!
java客房管理小项目 这个客房管理小项目,适合java初学者练手.功能虽然不多,但是内容很齐全! 喜欢这样文章的可以关注我,我会持续更新,你们的关注是我更新的动力!需要更多java学习资料的也可以私 ...
- 你要的SSM(Spring+Springmvc+Mybatis)小项目来了!!!
SSM-Maven-Heima 这是一个使用 SSM(Spring+Springmvc+Mybatis)框架的商城小项目,使用Maven构建项目,以MySQL为数据库系统,Redis的缓存服务器(并不 ...
- 封闭的一个多月,老菜鸟的 机械手和AGV 自动搬运小项目总结
最近上海疫情严重,闲赋在家无事可做,手机里不断的推送一些无脑的谩骂声音,索性找点事情做,将3月份实施的一个自动搬运小项目做一个简单的汇总,便于今后项目实施中积累一些经验.项目需求非常简单,因为能力有限 ...
- 这个小项目,上周被国外 AI 新闻网站报道,前些天又上了 github 热榜
疫情期间在校花了几个月时间,写了这个小项目,是关于音频特征提取和分析的,自己是 AI 专业研究音频的,但受限于对音频特征的理解,做研究时总感觉缺乏"底料",所以当做是学习练手做了这 ...
- 基于socket.io的实时在线选座系统
基于socket.io的实时在线选座系统(demo) 前言 前段时间公司做一个关于剧院的项目,遇到了这样一种情况. 在高并发多用户同时选座的情况下,假设A用户进入选座页面,正在选择座位,此时还没有提交 ...
随机推荐
- P1379 八数码难题 ( A* 算法 与 IDA_star 算法)
P1379 八数码难题 题目描述 在3×3的棋盘上,摆有八个棋子,每个棋子上标有1至8的某一数字.棋盘中留有一个空格,空格用0来表示.空格周围的棋子可以移到空格中.要求解的问题是:给出一种初始布局(初 ...
- Mynavi Programming Contest 2021(AtCoder Beginner Contest 201)A ~ E题题解
A - Tiny Arithmetic Sequence 水题,判断3个数是否能构成等差数列 void solve() { int a, b, c; cin >> a >> b ...
- AtCoder Beginner Contest 174 个人题解(ABC水题,D思维,E题经典二分,F离线树状数组)
做完本期以后,最近就不会再发布 AtCoder 的往届比赛了(备战蓝桥杯ing) 补题链接:Here ABC题都是水题,这里直接跳过 D - Alter Altar 题意:一个R-W串,可以进行两种操 ...
- 对话开发者:Serverless 落地的困境与破局
作者 | 阿里云开发者社区.InfoQ 从 2012 年提出 Serverless 到今年 2022 年刚好十年. 过去十年,上云是确定性趋势,在这个阶段企业一开始的关注点在于如何实现平滑上云.随着越 ...
- 7 Englishi 词根
1.跟直播,跟复习课,完成作业 2. 基础差加餐,听录播 3.如何听课 4.单词学习反复多次 如何记笔记 语块的汉语意思 单词的记忆方式和固定表达 俩种方式记忆单词 语块关联记忆 基础词根词缀(6节课 ...
- vue实现word或pdf文档导出的功能
https://www.jianshu.com/p/73915ef6ac89 Vue - element-ui 中预览 word .exce.ppt以及pdf文件 https://blog.csdn. ...
- ASP.Net Core 5.0 MVC log4net日志的添加
1. 引入程序集 Microsoft.Extensions.Logging.Log4Net.AspNetCore 及 log4net 2. 添加配置文件log4net.Config, 并将属性改为& ...
- 本地打包编译jdk版本问题
一.遇到的问题 进行项目接入pinpoint-ice插件,启动项目时pinpoint-agent日志报如下不支持jdk8的错误.' 二.排查 我们是在个人笔记本电脑上windows环境下通过mav ...
- 解决在Edge浏览器中使用不了(找不到)new bing的情况
1.问题 我们有时候看不到下图圈出部分的信息,无法找到New Bing的入口(这边是空的) 2.解决方式 1.选择右上角的三条杠,并选择其中的settings 2.将其中的country一项改为外国即 ...
- drop_caches 的简单学习
drop_caches 的简单学习 背景 最近一段时间一直在学习内存相关的知识 Linux系统里面的内存管理还是非常复杂的. 我这边理解 Linux从宏观层次的 段页式内存管理 到细节的buddy和s ...