1 Star 0 Fork 290

思变 / ZLToolKit

forked from 夏楚 / ZLToolKit 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
MIT

一个基于C++11简单易用的轻量级网络编程框架

平台 编译状态
Linux Build Status
macOS Build Status
iOS Build Status
Android Build Status
Windows 已经完成移植

项目初衷

多年的编程经历让我接触过多种网络开源库,譬如libevent、libev、libuv、boost.asio等等。这些开源框架有些是用C语言开发的,里面包含了各种难以阅读层层嵌套佶屈聱牙的宏,学习起来非常费力;有些使用起来又不甚方便,代码被切割成碎片零零碎碎;有些虽然使用简单,但是却非常宏大,牵涉各种代码,配置复杂,很难交叉编译。由于作者既从事过linux服务器编程又有jni、ios的编程经历,所以一直以来在寻求既能在服务器端高效运行又能在嵌入式平台方便开发的方法,但是一直没有找到比较合适的方案;于是作者大约在一年前开始整理多年的工作成果积累,抽取经过时间检验证明稳定有效的代码并且参考其他成熟的框架形成了这个项目。后面在我使用该项目(初期版本)用于实际开发,一路林林总总遇到了很多问题,但是在后面几个月不间断的调试、测试、修正、优化等过程中项目代码逐渐沉淀稳定,经过长时高强度的测试之后我把代码提交到github形成了这个项目。

特性

  • 网络库
    • tcp/udp客户端,接口简单易用并且是线程安全的,用户不必关心具体的socket api操作。
    • tcp服务器,使用非常简单,只要实现具体的tcp会话(TcpSession类)逻辑,使用模板的方式可以快速的构建高性能的服务器。
    • 对套接字多种操作的封装。
  • 线程库
    • 使用线程实现的简单易用的定时器(AsyncTaskThread)。
    • 读写锁。
    • 信号量的封装(ios下用条件变量实现)。
    • 自旋锁。
    • 线程组。
    • 简单易用的线程池,可以异步或同步执行任务,支持functional 和 lambad表达式。
  • 工具库
    • 文件操作。
    • std::cout风格的日志库,支持颜色高亮、代码定位、异步打印。
    • INI配置文件的读写。
    • 监听者模式的消息广播器。
    • 基于智能指针的循环池,不需要显式手动释放。
    • 环形缓冲,支持主动读取和读取事件两种模式。
    • mysql链接池,使用占位符(?)方式生成sql语句,支持同步异步操作。
    • 简单易用的ssl加解密黑盒,支持多线程。
    • 其他一些有用的工具。

后续任务

  • 提供更多的示例代码

编译(Linux)

  • 我的编译环境

    • Ubuntu16.04 64 bit + gcc5.4(最低gcc4.7)
    • cmake 3.5.1
  • 编译

    cd ZLToolKit
    ./build_for_linux.sh

编译(macOS)

  • 我的编译环境

    • macOS Sierra(10.12.1) + xcode8.3.1
    • Homebrew 1.1.3
    • cmake 3.8.0
  • 编译

    cd ZLToolKit
    ./build_for_mac.sh

编译(iOS)

  • 编译环境:请参考macOS的编译指导。

  • 编译

    cd ZLToolKit
    ./build_for_ios.sh
  • 你也可以生成Xcode工程再编译:

    cd ZLToolKit
    mkdir -p build
    cd build
    # 生成Xcode工程,工程文件在build目录下
    cmake .. -DCMAKE_TOOLCHAIN_FILE=../cmake/iOS.cmake -DIOS_PLATFORM=SIMULATOR64 -G "Xcode"

编译(Android)

  • 我的编译环境

    • macOS Sierra(10.12.1) + xcode8.3.1
    • Homebrew 1.1.3
    • cmake 3.8.0
    • android-ndk-r14b
  • 编译

    cd ZLToolKit
    export ANDROID_NDK_ROOT=/path/to/ndk
    ./build_for_android.sh

编译(Windows)

   1 使用cmake-gui打开工程并生成vs工程文件.
   2 找到工程文件(ZLToolKit.sln),双击用vs2017打开.
   3 选择编译Release 版本.
   4 依次编译 ZLToolKit_static、ZLToolKit_shared、ALL_BUILD、INSTALL.
   5 找到目标文件并运行测试用例.
   6 找到安装的头文件及库文件(在源码所在分区根目录).

联系方式

MIT License Copyright (c) 2016 xiongziliang <771730766@qq.com> Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

简介

一个基于C++11的轻量级网络框架,基于线程池技术可以实现大并发网络IO 展开 收起
C++
MIT
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
C++
1
https://gitee.com/sibian/ZLToolKit.git
git@gitee.com:sibian/ZLToolKit.git
sibian
ZLToolKit
ZLToolKit
master

搜索帮助

14c37bed 8189591 565d56ea 8189591