Boost.Asio C++ Network Programming Cookbook
eBook - ePub

Boost.Asio C++ Network Programming Cookbook

Dmytro Radchuk

Share book
  1. 248 pages
  2. English
  3. ePUB (mobile friendly)
  4. Available on iOS & Android
eBook - ePub

Boost.Asio C++ Network Programming Cookbook

Dmytro Radchuk

Book details
Book preview
Table of contents
Citations

About This Book

Over 25 hands-on recipes to create robust and highly-efficient cross-platform distributed applications with the Boost.Asio library

About This Book

  • Build highly efficient distributed applications with ease
  • Enhance your cross-platform network programming skills with one of the most reputable C++ libraries
  • Find solutions to real-world problems related to network programming with ready-to-use recipes using this detailed and practical handbook

Who This Book Is For

If you want to enhance your C++ network programming skills using the Boost.Asio library and understand the theory behind development of distributed applications, this book is just what you need. The prerequisite for this book is experience with general C++11. To get the most from the book and comprehend advanced topics, you will need some background experience in multithreading.

What You Will Learn

  • Boost your working knowledge of one of the most reputable C++ networking libraries—Boost.Asio
  • Familiarize yourself with the basics of TCP and UDP protocols
  • Create scalable and highly-efficient client and server applications
  • Understand the theory behind development of distributed applications
  • Increase the security of your distributed applications by adding SSL support
  • Implement a HTTP client easily
  • Use iostreams, scatter-gather buffers, and timers

In Detail

Starting with recipes demonstrating the execution of basic Boost.Asio operations, the book goes on to provide ready-to-use implementations of client and server applications from simple synchronous ones to powerful multithreaded scalable solutions. Finally, you are presented with advanced topics such as implementing a chat application, implementing an HTTP client, and adding SSL support. All the samples presented in the book are ready to be used in real projects just out of the box.

As well as excellent practical examples, the book also includes extended supportive theoretical material on distributed application design and construction.

Style and approach

This book is a set of recipes, each containing the statement and description of a particular practical problem followed by code sample providing the solution to the problem and detailed step-by-step explanation. Recipes are grouped by topic into chapters and ordered by the level of complexity from basic to advanced.

Frequently asked questions

How do I cancel my subscription?
Simply head over to the account section in settings and click on “Cancel Subscription” - it’s as simple as that. After you cancel, your membership will stay active for the remainder of the time you’ve paid for. Learn more here.
Can/how do I download books?
At the moment all of our mobile-responsive ePub books are available to download via the app. Most of our PDFs are also available to download and we're working on making the final remaining ones downloadable now. Learn more here.
What is the difference between the pricing plans?
Both plans give you full access to the library and all of Perlego’s features. The only differences are the price and subscription period: With the annual plan you’ll save around 30% compared to 12 months on the monthly plan.
What is Perlego?
We are an online textbook subscription service, where you can get access to an entire online library for less than the price of a single book per month. With over 1 million books across 1000+ topics, we’ve got you covered! Learn more here.
Do you support text-to-speech?
Look out for the read-aloud symbol on your next book to see if you can listen to it. The read-aloud tool reads text aloud for you, highlighting the text as it is being read. You can pause it, speed it up and slow it down. Learn more here.
Is Boost.Asio C++ Network Programming Cookbook an online PDF/ePUB?
Yes, you can access Boost.Asio C++ Network Programming Cookbook by Dmytro Radchuk in PDF and/or ePUB format, as well as other popular books in Computer Science & Systems Architecture. We have over one million books available in our catalogue for you to explore.

Information

Year
2016
ISBN
9781783986545
Edition
1

Boost.Asio C++ Network Programming Cookbook


Table of Contents

Boost.Asio C++ Network Programming Cookbook
Credits
About the Author
About the Reviewer
www.PacktPub.com
Support files, eBooks, discount offers, and more
Why subscribe?
Free access for Packt account holders
Preface
What this book covers
What you need for this book
Who this book is for
Sections
Getting ready
How to do it

How it works

There's more

See also
Conventions
Reader feedback
Customer support
Downloading the example code
Errata
Piracy
Questions
1. The Basics
Introduction
Creating an endpoint
Getting ready
How to do it

Creating an endpoint in the client to designate the server
Creating the server endpoint
How it works

There's more...
See also
Creating an active socket
How to do it...
How it works...
There's more...
See also
Creating a passive socket
How to do it

How it works

See also
Resolving a DNS name
How to do it

How it works

There's more

See also
Binding a socket to an endpoint
How to do it

How it works

There's more

See also
Connecting a socket
How to do it

How it works

There's more

See also
Accepting connections
How to do it

How it works

See also
2. I/O Operations
Introduction
I/O buffers
Synchronous and asynchronous I/O operations
Additional operations
Using fixed length I/O buffers
How to do it

Preparing a buffer for an output operation
Preparing a buffer for an input operation
How it works

Preparing a buffer for an output operation
Preparing a buffer for an input operation
See also
Using extensible stream-oriented I/O buffers
How to do it

How it works

See also
Writing to a TCP socket synchronously
How to do it

How it works

Alternative – the send() method
There's more...
See also
Reading from a TCP socket synchronously
How to do it

How it works

Alternative – the receive() method
There's more...
The asio::read() function
The asio::read_until() function
The asio::read_at() function
See also
Writing to a TCP socket asynchronously
How to do it

How it works

There's more...
See also
Reading from a TCP socket asynchronously
How to do it

How it works

There's more...
See also
Canceling asynchronous operations
How to do it

How it works

There's more...
See also
Shutting down and closing a socket
How to do it

The client application
The server application
Closing a socket
How it works

See also
3. Implementing Client Applications
Introduction
The classification of client applications
Synchronous versus asynchronous
The sample protocol
Implementing a synchronous TCP client
How to do it

How it works

The SyncTCPClient class
The main() entry point function
See also
Implementing a synchronous UDP client
How to do it

How it works

The SyncUDPClient class
The main() entry point function
See also
Implementing an asynchronous TCP client
How to do it

How it works

Starting the application – the main() entry point function
Request completion – the handler() callback function
The AsyncTCPClient class – initializing
The AsyncTCPClient class – initiating a request
The AsyncTCPClient class – canceling the request
The AsyncTCPClient class – closing the client
There's more

Implementing a multithreaded TCP client application
See also
4. Implementing Server Applications
Introduction
The sample protocol
Implementing a synchronous iterative TCP server
How to do it

How it works

The Service class
The Acceptor class
The Server class
The main() entry point function
Eliminating the drawbacks
Stopping a server in reasonable amount of time
Dealing with the server's vulnerability
Analyzing the results
See also
Implementing a synchronous parallel TCP server
How to do it

How it works

The Service class
The Acceptor class
The Server class
The main() entry point function
Eliminating the drawbacks
See also
Implementing an asynchronous TCP server
How to do it

How it works

The Service class
The Acceptor class
The Server class
The main() entry point function
See also
5. HTTP and SSL/TLS
Introduction
Implementing the HTTP client application
How to do it

The HTTPResponse class
The HTTPRequest class
The HTTPClient class
The callback and the main() entry point function
How it works

The HTTPClient class
The HTTPRequest class
The HTTPResponse class
Callback and the main() entry point functions
See also
Implementing the HTTP server application
Getting ready

How to do it

How it works

See also
Adding SSL/TLS support to client applications
Getting ready

How to do it

How it works

The SyncSSLClient class
The main() entry point function
See also
Adding SSL/TLS support to server applications
Getting ready

How to do it

How it works

The Service class
The Acceptor class
See also
6. Other Topics
Introduction
Using composite buffers for scatter/gather operations
Getting ready

How to do it

Preparing a composite buffer for gather output operations
Preparing a composite buffer for an input operation
How it works

See also
Using timers
How to do it

How it works

Getting and setting socket options
Getting ready

How to do it

How it works

Performing a stream-based I/O
How to do it

How it works

There's more

Implementing a server-side I/O
Setting timeout intervals
Index

Boost.Asio C++ Network Programming Cookbook

Copyright © 2016 Packt Publishing
All rights reserved. No part of this book may be reproduced, stored in a retrieval system, or transmitted in any form or by any means, without the prior written permission of the publisher, except in the case of brief quotations embedded in critical articles or reviews.
Every effort has been made in the preparation of this book to ensure the accuracy of the information presented. However, the information contained in this book is sold without warranty, either express or implied. Neither the author, nor Packt Publishing, and its dealers and distributors will be held liable for any damages caused or alleged to be caused directly or indirectly by this book.
Packt Publishing has endeavored to provide trademark information about all of the companies and products mentioned in this book by the appropriate use of capitals. However, Packt Publishing cannot guarantee the accuracy of this information.
First published: January 2016
Production reference: 1190116
Published by Packt Publishing Ltd.
Livery Place
35 Livery Street
Birmingham B3 2PB, UK.
ISBN 978-1-78398-654-5
www.packtpub.com

Credits

Author
Dmytro Radchuk
Reviewer
Victor Sigler
Commissioning Editor
Usha Iyer
Acquisition Editors
Shaon Basu
Manish Nainani
Content Development Editor
Samantha Gonsalves
Technical Editor
Madhunikita Sunil Chindarkar
Copy Editors
Trishya Hazare
Rashmi Sawant
Project Coordinator
Kinjal Bari
Proofreader
Safis Editing
Indexer
Hemangini Bari
Production Coordinator
Shantanu N. Zagade
Cover Work
Shantanu N. Zagade

About the Author

Dmytro Radchuk is a software engineer from Kyiv, Ukraine. His passion for science started at a young age and led him to receive a degree in computer science from Kyiv Polytechnic University. As of today, he has deep technical knowledge and more than 8 years of experience in the field of software development for several industries and businesses. He strongly believes that the whole is greater than the sum of its parts and this is one of the reasons why the development of distributed applications has become his main specialization.
Dmytro has always supported the idea of sharing knowledge and this has resulted in Boost.Asio C++ Network Programming Cookbook, which has become his first officially published book. He believes that science will help us deal with the monotony of everyday life. When he is not exploring another facet of computer engineering, he is probably learning a new aspect of psychology, history, or the arts, which are also of great interest to him.

About the Reviewer

Victor Sigler is an iOS software engineer with experience in developing consumer and enterprise mobile applications. He loves everything that is related to Apple and is passionate about Swift and the world of programming contests, where he has spent a long time developing in C++. He enjoys writing about iOS development in his blog at http://www.vsigler.com and also enjoys helping people with their queries on Stack Overflow. He...

Table of contents