The C++ Network Library Project -- header-only, cross-platform, standards compliant networking library.
C++ HTML JavaScript CSS CMake Python Other
Latest commit 8554867 Nov 25, 2016 @glynos committed on GitHub Merge pull request #710 from randydu/patch-1
Update server_request_parsers_impl.cpp
Failed to load latest commit information.
boost replace std::promise/std::shared_future with boost equivalents Oct 15, 2016
contrib Add RPM spec file in contrib directory. Jul 15, 2016
deps Added URI for MSVC after validating that it compiles and runs correct… May 18, 2016
libs Update server_request_parsers_impl.cpp Nov 24, 2016
.clang-format Always break template decls Sep 6, 2014
.gitignore Always ignore vim swap files Mar 29, 2016
.gitmodules Added cpp-netlib/uri as a submodule. May 16, 2016
.travis.yml Applied fixes to disable URI tests, examples, and docs on Travis. May 16, 2016 Support standalone asio Feb 8, 2016
CMakeLists.txt replace std::promise/std::shared_future with boost equivalents Oct 15, 2016
CONTRIBUTING.rst Fixed formatting in the steps to prepare a PR. Jul 16, 2016
Doxyfile Doxygen+Sphinx+Breathe = Inline Documentation Jan 9, 2016
LICENSE_1_0.txt Initial import. May 20, 2007
RATIONALE.txt Improvements as mentioned on the mailing list, cleanup Dec 22, 2009
README.rst Added image to the license in README.rst. Apr 4, 2016 Applied fixes to disable URI tests, examples, and docs on Travis. May 16, 2016 Added e-mail addresses in Enforcement paragraph. Feb 25, 2016 Removed trailing white spaces. Apr 4, 2015 add CMake package configuration file Sep 19, 2013
index.html Minor restructuring of docs; added html docs so that it can be viewed… Jan 20, 2010 Revert "Updated build scripts so that we don't build boost." Feb 8, 2016 Use git-archive-all for packagine Mar 30, 2016


C++ Network Library

Modern C++ network programming libraries.

Join us on Slack:

Subscribe to the mailing list:!forum/cpp-netlib

Downloading cpp-netlib

You can find official release packages of the library at:

If you want the latest code from the master branch of the project, you can follow these instructions for cloning the project repository:

$ git clone
$ cd cpp-netlib
$ git submodule init
$ git submodule update


cpp-netlib is a collection of network related routines/implementations geared towards providing a robust cross-platform networking library. cpp-netlib offers the following implementations:

  • Common Message Type -- A generic message type which can be used to encapsulate and store message related information, used by all network implementations as the primary means of data exchange.
  • Network protocol message parsers -- A collection of parsers which generate message objects from strings.
  • Adapters and Wrappers -- A collection of Adapters and wrappers aimed towards making the message type STL friendly.
  • Network protocol client and server implementations -- A collection of network protocol implementations that include embeddable client and server types.

This library is released under the Boost Software License (please see or the accompanying LICENSE_1_0.txt file for the full text.

Building and Installing

To build the libraries you will need to have CMake version 2.8 or higher installed appropriately in your system.

$ cmake --version
cmake version 2.8.1

It is recommended that you build cpp-netlib outside of the source directory, to avoid having issues with CMake generated files polluting the source directory:

$ mkdir ~/cpp-netlib-build
$ cd ~/cpp-netlib-build
$ cmake -DCMAKE_BUILD_TYPE=Debug     \
>       -DCMAKE_C_COMPILER=clang     \
>       -DCMAKE_CXX_COMPILER=clang++ \
>       $HOME/cpp-netlib    # we're assuming this is where cpp-netlib is.

Once CMake is done with generating the Makefiles and configuring the project, you can now build the tests and run them:

$ cd ~/cpp-netlib-build
$ make
$ make test

If for some reason some of the tests fail, you can send the files in Testing/Temporary/ as attachments to the cpp-netlib developers mailing list.

Running Tests

If you want to run the tests that come with cpp-netlib, there are a few things you will need. These are:

  • A compiler (GCC 4.x, Clang 3.6, MSVC 2008)
  • A build tool (CMake is required)
  • OpenSSL headers (optional)


This assumes that you have cpp-netlib at the top-level of your home directory.

Hacking on cpp-netlib

cpp-netlib uses git for tracking work, and is hosted on GitHub. cpp-netlib is hosted on GitHub following the GitHub recommended practice of forking the repository and submitting pull requests to the source repository. You can read more about the forking process and submitting pull requests if you're not familiar with either process yet. cpp-netib follows the GitHub pull request model for accepting patches. You can read more about the process at

Because cpp-netlib is released under the Boost Software License it is recommended that any file you make changes to bear your copyright notice alongside the original authors' copyright notices on the file. Typically the copyright notices are at the top of each file in the project.

You can read about the cpp-netlib style guide at

The main "upstream" repository is at

Contact and Support

In case you have any questions or would like to make feature requests, you can contact the development team through the developers mailing list or by filing issues at

Join us on Slack:

You can reach the maintainers of the project through:

Dean Michael Berris (

Glyn Matthews (