Python微信订餐小程序课程视频
https://edu.csdn.net/course/detail/36074
Python实战量化交易理财系统
https://edu.csdn.net/course/detail/35475
文章首发:聊聊第一个开源项目 - CProxy 作者:会玩code
初衷
最近在学C++,想写个项目练练手。对网络比较感兴趣,之前使用过ngrok(GO版本的内网穿透项目),看了部分源码,想把自己的一些优化想法用C++实现一下,便有了这个项目。
项目介绍
CProxy是一个反向代理,用户可在自己内网环境中启动一个业务服务,并在同一网络下启动CProxyClient,用于向CProxyServer注册服务。CProxyClient和CProxyServer之间会创建一个隧道,外网可以通过访问CProxyServer,数据转发到CProxyClient,从而被业务服务接收到。实现内网服务被外网访问。
项目地址
https://github.com/lzs123/CProxy.git
使用方法
bash build.sh
// 启动服务端
{ProjectDir}/build/server/Server --proxy_port=8090 --work_thread_nums=4
(另一个终端)
// 启动客户端
{ProjectDir}/build/client/Client --local_server=127.0.0.1:7777 --cproxy_server=127.0.0.1:8080
项目亮点
- 使用epoll作为IO多路复用的实现
- 数据转发时,使用splice零拷贝,减少IO性能瓶颈
- 数据连接和控制连接接耦,避免互相影响
- 采用Reactor多线程模型,充分利用多核CPU性能
流程架构
角色
- LocalServer: 内网业务服务
- CProxyClient: CProxy客户端,一般与LocalServer部署在一起,对接CProxyServer和InnerServer
- CProxyServer: CProxy服务端
- PublicClient: 业务客户端