Skip to content
forked from IronsDu/brynet

高效的c++ socket框架 而且要求是跨平台,那我只能推荐我自己的C++网络库:IronsDu/brynet 特点是效率高,使用方便安全,还支持SSL、HTTP、WebSocket。文档逐步补全中:https://github.com/IronsDu/brynet/blob/master/docs/main.zh-cn.md不过需要C++11编译器支持(gcc4.8+,VS2013+)当然唯一不能满足你的是没有协程(想简单支持,加入我那个协程库也不难,但难免有坑),我个人一直觉得C++里跑协程不太好,总有不满意的地方,因此我不太想用。你真的很看重协程的话,那就用golang 吧(当然我也有一个基于brynet的Lua同步API网络库) 作者:Irons Du 链接:https://ww

License

Notifications You must be signed in to change notification settings

gitopening/brynet

 
 

Repository files navigation

Brynet

Header Only Cross platform high performance TCP network library using C++ 11.

996.icu LICENSE Platform

Build status

build-and-test

Features

  • Header only
  • Cross platform (Linux | Windows | MacOS)
  • High performance and safety use.
  • None depend
  • Multi-threaded
  • SSL support
  • Support HTTP、HTTPS、WebSocket
  • IPv6 support

Documentation

Compatibility

  • Visual C++ 2013+ (32/64-bit)
  • GCC 4.8+ (32/64-bit)
  • Clang (Supported C++ 11)

Macro

  • BRYNET_VERSION
  • BRYNET_USE_OPENSSL

Build Example

  1. cmake . -Dbrynet_BUILD_EXAMPLES=ON -Dbrynet_BUILD_TESTS=ON
  2. If you use Windows, please open brynet.sln then build. If on Linux or MacOS, only enter make.

Only Install

  1. cmake .
  2. sudo make install

Usages

Benchmark

Under localhost, use CentOS 6.5 virtual mahcine(host machine is Win10 i5)

  • PingPong

    Benchamrk's server and client both only use one thread, and packet size is 4k

    PingPong

  • Broadcast

    Server use two network threads and one logic thread, client use one network(also process logic) thread. every packet size is 46 bytes. every packet contain client's id. server broadcast packet to all client when recv one packet from any client. client send one packet when recv packet from server and packet's id equal self.

    Broadcast

  • Ab HTTP(1 network thread)

    Server Hostname:        127.0.0.1
    Server Port:            9999
  
    Document Path:          /abc/de?a=1
    Document Length:        25 bytes
    
    Concurrency Level:      100
    Time taken for tests:   17.734 seconds
    Complete requests:      500000
    Failed requests:        0
    Total transferred:      41000000 bytes
    HTML transferred:       12500000 bytes
    Requests per second:    28194.36 [#/sec] (mean)
    Time per request:       3.547 [ms] (mean)
    Time per request:       0.035 [ms] (mean, across all concurrent requests)
    Transfer rate:          2257.75 [Kbytes/sec] received
    
    Connection Times (ms)
    min  mean[+/-sd] median   max
    Connect:        0    2   0.2      2       3
    Processing:     1    2   0.3      2       7
    Waiting:        0    1   0.4      1       6
    Total:          2    4   0.2      4       7
    
    Percentage of the requests served within a certain time (ms)
    50%      4
    66%      4
    75%      4
    80%      4
    90%      4
    95%      4
    98%      4
    99%      4
    100%      7 (longest request)

Examples

Users

About

高效的c++ socket框架 而且要求是跨平台,那我只能推荐我自己的C++网络库:IronsDu/brynet 特点是效率高,使用方便安全,还支持SSL、HTTP、WebSocket。文档逐步补全中:https://github.com/IronsDu/brynet/blob/master/docs/main.zh-cn.md不过需要C++11编译器支持(gcc4.8+,VS2013+)当然唯一不能满足你的是没有协程(想简单支持,加入我那个协程库也不难,但难免有坑),我个人一直觉得C++里跑协程不太好,总有不满意的地方,因此我不太想用。你真的很看重协程的话,那就用golang 吧(当然我也有一个基于brynet的Lua同步API网络库) 作者:Irons Du 链接:https://ww

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C++ 88.9%
  • C 10.8%
  • CMake 0.3%