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

Boost.Asio C++ Network Programming Cookbook

Dmytro Radchuk

Buch teilen
  1. 248 Seiten
  2. English
  3. ePUB (handyfreundlich)
  4. Über iOS und Android verfügbar
eBook - ePub

Boost.Asio C++ Network Programming Cookbook

Dmytro Radchuk

Angaben zum Buch
Buchvorschau
Inhaltsverzeichnis
Quellenangaben

Über dieses Buch

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.

Häufig gestellte Fragen

Wie kann ich mein Abo kündigen?
Gehe einfach zum Kontobereich in den Einstellungen und klicke auf „Abo kündigen“ – ganz einfach. Nachdem du gekündigt hast, bleibt deine Mitgliedschaft für den verbleibenden Abozeitraum, den du bereits bezahlt hast, aktiv. Mehr Informationen hier.
(Wie) Kann ich Bücher herunterladen?
Derzeit stehen all unsere auf Mobilgeräte reagierenden ePub-Bücher zum Download über die App zur Verfügung. Die meisten unserer PDFs stehen ebenfalls zum Download bereit; wir arbeiten daran, auch die übrigen PDFs zum Download anzubieten, bei denen dies aktuell noch nicht möglich ist. Weitere Informationen hier.
Welcher Unterschied besteht bei den Preisen zwischen den Aboplänen?
Mit beiden Aboplänen erhältst du vollen Zugang zur Bibliothek und allen Funktionen von Perlego. Die einzigen Unterschiede bestehen im Preis und dem Abozeitraum: Mit dem Jahresabo sparst du auf 12 Monate gerechnet im Vergleich zum Monatsabo rund 30 %.
Was ist Perlego?
Wir sind ein Online-Abodienst für Lehrbücher, bei dem du für weniger als den Preis eines einzelnen Buches pro Monat Zugang zu einer ganzen Online-Bibliothek erhältst. Mit über 1 Million Büchern zu über 1.000 verschiedenen Themen haben wir bestimmt alles, was du brauchst! Weitere Informationen hier.
Unterstützt Perlego Text-zu-Sprache?
Achte auf das Symbol zum Vorlesen in deinem nächsten Buch, um zu sehen, ob du es dir auch anhören kannst. Bei diesem Tool wird dir Text laut vorgelesen, wobei der Text beim Vorlesen auch grafisch hervorgehoben wird. Du kannst das Vorlesen jederzeit anhalten, beschleunigen und verlangsamen. Weitere Informationen hier.
Ist Boost.Asio C++ Network Programming Cookbook als Online-PDF/ePub verfügbar?
Ja, du hast Zugang zu Boost.Asio C++ Network Programming Cookbook von Dmytro Radchuk im PDF- und/oder ePub-Format sowie zu anderen beliebten Büchern aus Computer Science & Systems Architecture. Aus unserem Katalog stehen dir über 1 Million Bücher zur Verfügung.

Information

Jahr
2016
ISBN
9781783986545

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...

Inhaltsverzeichnis