/rProxy

还是这个名字 : )

Primary LanguageC++

还是这个名字 :)

目录介绍

common

里面是客户端和服务端会共同需要的代码,这样就不用同时维护两份代码了。当然,编写的时候也需要考虑两个平台兼容的问题了。

poll

简单实现的一个网络库,只有几百行代码,也不知道能不能称之为,通过宏定义区别客户端和服务端的部分。因为服务端使用epoll模型,但是windows没有这个模型。那么客户端目前选择select,因为对于客户端来说似乎请求数量并不会很大。再者epollselect结构上比较相似,比较容易使用宏区分。

thread

是一个简单的线程池,不过这次好像用不到线程池。另外fetch任务的地方其实有个bug,不过不影响其正常工作。

client

是客户端了,使用vs开发,建立工程。将来也许会考虑同时支持linux,也就是client文件夹下有sln通过vs直接能够编译,同时也有Makefile通过Linux直接make就能出二进制文件。不过服务端目前没有考虑兼容windows,因为我也没有windows服务器。不过如果只是通过简单的修改就能兼容windows的话,也未尝不可。最后才会去做这个事情。

server

服务端,直接make就能得到二进制文件。未来会介绍一下其工作原理,但是现在还没有开发完成。

Todo

  • 完成目录调整
  • 跑通客户端
  • 加上启动参数 指定主机和端口
  • 好像客户端指针出现了异常,导致发出了错误的包,而且好像还很严重。dump出来的是二进制数据,是个线索
  • [功能] conf的开发 (目前需求并不大,通过命令行参数够用了)
  • [功能] 客户端密码认证
  • [功能] 代理列表获取 这里将会简单支持http能够通过网页直接获取到客户端的状态
  • [功能] 管理输出的日志
  • [功能] 登录错误提示
  • [BUG] 客户端会出现接受结束的问题 !!!最高优先级!!!
  • [BUG] 服务端莫名其妙的崩掉了
  • [BUG] 非法连接导致出现服务端拒绝服务
  • [优化] 断线重连,能保持状态就更好了
  • [优化] 客户端,remoce_hp()之后如果再接收到sid将会再添加删除一次
  • 梳理服务端各个对象之间的关系,归属关系理清楚
  • [BUG] 服务端记录所有poll里面的对象,以便在关闭程序或者重启的时候能够把内存清理干净
  • [BUG] 浏览器可能发起两次请求,导致客户端内存泄漏