1<html> 2<head> 3<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 4<title>Introduction</title> 5<link rel="stylesheet" href="../../../../../doc/src/boostbook.css" type="text/css"> 6<meta name="generator" content="DocBook XSL Stylesheets V1.79.1"> 7<link rel="home" href="../index.html" title="Chapter 1. Boost.Beast"> 8<link rel="up" href="../index.html" title="Chapter 1. Boost.Beast"> 9<link rel="prev" href="release_notes.html" title="Release Notes"> 10<link rel="next" href="quick_start.html" title="Quick Look"> 11</head> 12<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> 13<table cellpadding="2" width="100%"><tr> 14<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td> 15<td align="center"><a href="../../../../../index.html">Home</a></td> 16<td align="center"><a href="../../../../../libs/libraries.htm">Libraries</a></td> 17<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td> 18<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td> 19<td align="center"><a href="../../../../../more/index.htm">More</a></td> 20</tr></table> 21<hr> 22<div class="spirit-nav"> 23<a accesskey="p" href="release_notes.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="quick_start.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a> 24</div> 25<div class="section"> 26<div class="titlepage"><div><div><h2 class="title" style="clear: both"> 27<a name="beast.introduction"></a><a class="link" href="introduction.html" title="Introduction">Introduction</a> 28</h2></div></div></div> 29<p> 30 Beast is a C++ header-only library serving as a foundation for writing interoperable 31 networking libraries by providing <span class="bold"><strong>low-level HTTP/1, WebSocket, 32 and networking protocol</strong></span> vocabulary types and algorithms using the 33 consistent asynchronous model of <a href="../../../../../libs/asio/index.html" target="_top">Boost.Asio</a>. 34 </p> 35<p> 36 This library is designed for: 37 </p> 38<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> 39<li class="listitem"> 40 <span class="bold"><strong>Symmetry:</strong></span> Algorithms are role-agnostic; 41 build clients, servers, or both. 42 </li> 43<li class="listitem"> 44 <span class="bold"><strong>Ease of Use:</strong></span> <a href="../../../../../libs/asio/index.html" target="_top">Boost.Asio</a> 45 users will immediately understand Beast. 46 </li> 47<li class="listitem"> 48 <span class="bold"><strong>Flexibility:</strong></span> Users make the important 49 decisions such as buffer or thread management. 50 </li> 51<li class="listitem"> 52 <span class="bold"><strong>Performance:</strong></span> Build applications handling 53 thousands of connections or more. 54 </li> 55<li class="listitem"> 56 <span class="bold"><strong>Basis for Further Abstraction.</strong></span> Components 57 are well-suited for building upon. 58 </li> 59</ul></div> 60<p> 61 This library is not a client or server, but it can be used to build those things. 62 Many examples are provided, including clients and servers, which may be used 63 as a starting point for writing your own program. 64 </p> 65<h4> 66<a name="beast.introduction.h0"></a> 67 <span class="phrase"><a name="beast.introduction.motivation"></a></span><a class="link" href="introduction.html#beast.introduction.motivation">Motivation</a> 68 </h4> 69<p> 70 Beast empowers users to create their own libraries, clients, and servers using 71 HTTP/1 and WebSocket. Code will be easier and faster to implement, understand, 72 and maintain, because Beast takes care of the low-level protocol details. The 73 HTTP and WebSocket protocols drive most of the World Wide Web. Every web browser 74 implements these protocols to load webpages and to enable client side programs 75 (often written in JavaScript) to communicate interactively. C++ benefits greatly 76 from having a standardized implementation of these protocols. 77 </p> 78<div class="section"> 79<div class="titlepage"><div><div><h3 class="title"> 80<a name="beast.introduction.requirements"></a><a class="link" href="introduction.html#beast.introduction.requirements" title="Requirements">Requirements</a> 81</h3></div></div></div> 82<div class="important"><table border="0" summary="Important"> 83<tr> 84<td rowspan="2" align="center" valign="top" width="25"><img alt="[Important]" src="../../../../../doc/src/images/important.png"></td> 85<th align="left">Important</th> 86</tr> 87<tr><td align="left" valign="top"><p> 88 This library is for programmers familiar with <a href="../../../../../libs/asio/index.html" target="_top">Boost.Asio</a>. 89 Users who wish to use asynchronous interfaces should already know how to 90 create concurrent network programs using callbacks or coroutines. 91 </p></td></tr> 92</table></div> 93<p> 94 Beast requires: 95 </p> 96<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> 97<li class="listitem"> 98 <span class="bold"><strong>C++11:</strong></span> Robust support for most language 99 features. 100 </li> 101<li class="listitem"> 102 <span class="bold"><strong>Boost:</strong></span> Beast only works with Boost, 103 not stand-alone Asio 104 </li> 105<li class="listitem"> 106 <span class="bold"><strong>OpenSSL:</strong></span> Version 1.0.2 or higher. Required 107 to build the tests, examples, and to use TLS/Secure sockets. 108 </li> 109</ul></div> 110<p> 111 Tested with these compilers: msvc-14+, gcc 4.8.4+, clang 3.6+. 112 </p> 113<p> 114 Sources are <span class="bold"><strong>header-only</strong></span>. Adding additional 115 libraries to the linking step for your programs to use Beast is normally 116 not necessary, except for these cases: 117 </p> 118<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> 119<li class="listitem"> 120 When using coroutines created by calling <a href="../../../../../doc/html/boost_asio/reference/spawn.html" target="_top"><code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">asio</span><span class="special">::</span><span class="identifier">spawn</span></code></a>, you will need to add 121 the <a href="../../../../../libs/coroutine/index.html" target="_top">Boost.Coroutine</a> 122 library to your program. 123 </li> 124<li class="listitem"> 125 When using <a href="../../../../../doc/html/boost_asio/reference/ssl__stream.html" target="_top"><code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">asio</span><span class="special">::</span><span class="identifier">ssl</span><span class="special">::</span><span class="identifier">stream</span></code></a>, you will need to add 126 the <a href="https://www.openssl.org/" target="_top">OpenSSL</a> library to 127 your program. 128 </li> 129</ul></div> 130<p> 131 Please visit the <a href="../../../../../more/getting_started.html" target="_top">Boost documentation</a> 132 for instructions on how to build and link with Boost libraries for your particular 133 environment system. 134 </p> 135</div> 136<div class="section"> 137<div class="titlepage"><div><div><h3 class="title"> 138<a name="beast.introduction.reporting_bugs"></a><a class="link" href="introduction.html#beast.introduction.reporting_bugs" title="Reporting Bugs">Reporting Bugs</a> 139</h3></div></div></div> 140<p> 141 To report bugs or get help using Beast, GitHub issues are preferred. Please 142 visit <a href="https://github.com/boostorg/beast/issues" target="_top">https://github.com/boostorg/beast/issues</a> 143 to ask a question, report a defect, or request a feature. If you prefer to 144 keep your issue or question confidential please email the author at <a href="mailto:vinnie.falco%40gmail.com" target="_top">vinnie.falco@gmail.com</a>. 145 </p> 146</div> 147<div class="section"> 148<div class="titlepage"><div><div><h3 class="title"> 149<a name="beast.introduction.credits"></a><a class="link" href="introduction.html#beast.introduction.credits" title="Credits">Credits</a> 150</h3></div></div></div> 151<p> 152 Boost.Asio is the inspiration behind which all of the interfaces and implementation 153 strategies are built. Some parts of the documentation are written to closely 154 resemble the wording and presentation of Boost.Asio documentation. Credit 155 goes to <a href="https://github.com/chriskohlhoff" target="_top">Christopher Kohlhoff</a> 156 for his wonderful Asio library and the ideas in <a href="http://cplusplus.github.io/networking-ts/draft.pdf" target="_top"><span class="bold"><strong>C++ Extensions for Networking</strong></span></a> which power 157 Beast. 158 </p> 159<p> 160 Beast would not be possible without the support of <a href="https://www.ripple.com" target="_top">Ripple</a> 161 during the library's early development, or the ideas, time and patience contributed 162 by <a href="https://github.com/JoelKatz" target="_top">David Schwartz</a>, <a href="https://github.com/ximinez" target="_top">Edward Hennis</a>, <a href="https://github.com/howardhinnant" target="_top">Howard 163 Hinnant</a>, <a href="https://github.com/miguelportilla" target="_top">Miguel Portilla</a>, 164 <a href="https://github.com/nbougalis" target="_top">Nik Bougalis</a>, <a href="https://github.com/seelabs" target="_top">Scott 165 Determan</a> and <a href="https://github.com/scottschurr" target="_top">Scott Schurr</a>. 166 Many thanks to <a href="https://github.com/K-ballo" target="_top">Agustín Bergé</a>, 167 <a href="http://www.boost.org/users/people/glen_fernandes.html" target="_top">Glen Fernandes</a>, 168 and <a href="https://github.com/pdimov" target="_top">Peter Dimov</a> for tirelessly 169 answering questions on the <a href="https://slack.cpp.al/" target="_top">C++ Language 170 Slack Workspace</a>. 171 </p> 172<p> 173 Thanks to <a href="https://github.com/djarek" target="_top">Damian Jarek</a> for 174 his generous participation and source code contributions. 175 </p> 176<p> 177 Thanks to <a href="https://github.com/madmongo1" target="_top">Richard Hodges</a> 178 (hodges.r@gmail.com) for maintaining Beast on behalf of the <a href="https://cppalliance.org" target="_top">C++ 179 Alliance</a>. 180 </p> 181<p> 182 Many thanks to <a href="https://www.jetbrains.com" target="_top">Jetbrains s.r.o.</a> 183 for generously providing the Beast development team with All Product Developmnent 184 Licenses. 185 </p> 186</div> 187</div> 188<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr> 189<td align="left"></td> 190<td align="right"><div class="copyright-footer">Copyright © 2016-2019 Vinnie 191 Falco<p> 192 Distributed under the Boost Software License, Version 1.0. (See accompanying 193 file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>) 194 </p> 195</div></td> 196</tr></table> 197<hr> 198<div class="spirit-nav"> 199<a accesskey="p" href="release_notes.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="quick_start.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a> 200</div> 201</body> 202</html> 203