• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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