聊聊第一个开源项目(内网穿透) - CProxy

本文介绍了CProxy,一个用C++编写的内网穿透工具,通过反向代理实现内外网通信。文章详细阐述了项目的初衷、工作原理、使用方法和亮点,包括epoll的IO多路复用、零拷贝技术以及多线程Reactor模型。在数据转发和连接管理方面,CProxy采用了高效的策略以优化性能。
摘要由CSDN通过智能技术生成

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性能

流程架构

角色

  1. LocalServer: 内网业务服务
  2. CProxyClient: CProxy客户端,一般与LocalServer部署在一起,对接CProxyServer和InnerServer
  3. CProxyServer: CProxy服务端
  4. PublicClient: 业务客户端

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值