asio C++ library Home | Download | Documentation | Source | Mailing List | Blog

Who is using Asio?

Here is a list of some projects that are using Asio. If you are using Asio, feel free to ask for your project’s information to be added to this page. Consider including information about scalability, performance and so on; i.e. the sorts of things you would like to hear about other projects. Thanks!

Restbed - RESTful C++ embedded framework

Corvusoft’s Restbed framework brings asynchronous RESTful functionality to C++11 applications.

reTurn Server - high-performance ICE/STUN/TURN server for SIP, XMPP and WebRTC media stream relay

SIP, XMPP and WebRTC require a TURN server to relay media streams for users on private IP networks. reTurn Server is an open source project that implements the TURN standard.

asio is used for all low-level networking, providing support for UDP, TCP and TLS transports for TURN.

WebSocket++ (WebSocketPP) - WebSocket framework

WebSockets provide a mechanism for messaging passing between JavaScript clients in a web browser and server side code.

WebSocketPP is a C++ library implementing both WebSocket client and server functionality. It is an asynchronous application built on top of asio.

Loggly - high-performance cloud-based log aggregation and analytics

At Loggly we built our high-performance Collectors using the Boost ASIO framework. We found its event-driven model to perform very well, and the framework itself was a joy to code with. You can more details from our blog post.

Remobo — create your own Instant Private Network (IPN)

Remobo allows you to easily creates an Instant Private Network (IPN) between your computers and your friends. It’s a COMPUTER network based on your social network circle. With IPN service, you and your friends can work or play together over Internet as if you were sitting on the same office or home LAN (Local Area Network).

Remobo uses Boost and asio libraries for multi-threading, asynchronous socket I/O, and timer. which are the building blocks for our large-scale, fault-tolerant distributed systems. Boost and asio are chosen over other alternative libraries for its portability across multiple platforms like Linux, Mac OSX, and Windows NT/2000/XP/Vista. The simplicity of asio’s header-only implementation is also highly appreciated.

OpenTibia - Open Source Emulation of the MMORPG Tibia

OpenTibia is an open source emulation of the massively multiplayer online RPG; Tibia.

OpenTibia now uses the boost.http://asio.sourceforge.net[asio] library for asynchronous socket I/O. As with Osiris, it is to allow a single thread to manage many connections simultaneously.

Osiris - Serverless Portal System

Osiris is a free portal creation software. The portals created with osiris don’t need a central server, they are safe, indestructible and anonymous. In those portals, all users have the same rights, so the standard hierarchys (administrators, moderators, members) of regular forums are not present, even if they are supported.

Osiris uses the Boost and asio libraries for multi-threading and asynchronous I/O. Multi-threading allows the use of multiple CPUs or processing cores to process HTTP requests simultaneously. Asynchronous I/O allows each thread to handle many connections simultaneously (otherwise, a single thread would be required for every connection to the server).

Jet Infosystems, SKVT "Dozor-Jet"

Jet Infosystems, Moscow - one of the leading Russian integrator and manufacturer of network security software. SKVT "Dozor-Jet" is web traffic filtering system, that act as a proxy and perform bidirectional filtering of web traffic - by URL, mime-type, words, time, etc. Description (in Russian) available here.

Software implement process per connection strategy, perform pre-forking of handlers. Asio used both in sync and async mode. Sync mode use for http connections, and async - for https.

Pion CEP Platform & Pion Network Library

The Pion Network Library (pion-net) is a C++ development library for implementing lightweight HTTP interfaces.

pion-net uses the Boost and asio libraries for multi-threading and asynchronous I/O. Multi-threading allows the use of multiple CPUs or processing cores to process HTTP requests simultaneously. Asynchronous I/O allows each thread to handle many connections simultaneously (otherwise, a single thread would be required for every connection to the server). The combination of these technologies takes full advantage of the most modern CPUs, and allows servers implemented using pion-net to handle many thousands of connections simultaneously with a single physical server.

pion-net lets you run multiple servers listening to any number of ports and network devices. Each server may have its own collection of web services defined which are bound to HTTP resources. Protocols other than HTTP can also easily be implemented for any server. A common thread pool is used to handle operations for all servers. pion-net also supports server-side SSL & TLS encryption when built with the OpenSSL library.

The Pion CEP Platform is open source software, published under the GNU Affero GPL license. It is a real-time event processing engine that is designed to be extremely extensible through the use of plugins. Plugins can be developed to provide specialized data processing logic and web services, and to enable support for different data encoding formats and databases.

Bit Factory Software GmbH: "Alex der Dienstplanassistent"

Bit Factory is an austrian company specialiced in human resource scheduling software.

For the upcomming Version 7 of Alex der Dienstplanassistent, asio is used

a) to hide the network communication with its fine socket abstraction.

  • On the client in sync, on the server side in async mode.

b) in conjunction with the Boost threads library as the backbone of the server’s task dispatching strategy:

  • Here multiple threads serve the client requests simultaniously

  • 'read' requests it are processed in sync

  • 'write' requests are dispatched(queued) to a seperate asio::io_service, runing in its own dedicated writer thread

  • DB-resources are shared between different clients

The clou is: Thanks to asio, the whole thing fits nearly on a screen page! If you need sample code, send a mail!

Videofon MV JSC, TIP KSOT

Videofon MV is one of the biggest complex security solutions provider in Moscow.

TIP KSOT is an integrated video security system based on unique technology all-in-one-cable. TIP KSOT provides video observation of a significant part of Moscow to state government. TIP KSOT network subsystem uses boost::asio to control and receive online and archive video from about 1000 hosts in fast, reliable and secured way. Description in Russian is available here

libtorrent - BitTorrent library

libtorrent is a library that implements a bittorrent client. Asio is used as the main message loop to process, typically, up to 200 tcp connections. It handles all connections in one thread as asynchronous operations.

libbitcoin - Bitcoin library

rewrite bitcoin, make it super-pluggable, very easy to do and hack everything at every level, and very configurable

CodeShop

CodeShop uses Boost.Asio for consultancy and projects: http://www.code-shop.com

CodeShop used Boost.Asio in the client part of Abonja (internet video distribution: your choice @ your time): www.abonja.nl

CodeShop used boost.asio for Zoep and OpenZoep: a voip sdk built for/together with Voipster. Note: the SSL layer in Asio was developed during this project.

Asio works great on every thing we made!

ReSP - Reflective Simulation Platform

ReSP (http://www.resp-sim.org) is a simulation platform based on Python and SystemC; the final aim is assisting the developer in the design of mixed Hardware/Software embedded systems, in particular Multi-Processor Systems-On-Chip.

The Asio libraries are used for the communication among the simulation platform and the GDB debugger in order to allow the debugging of the software running on the simulated processors.

JukeFly - Social Music Player

JukeFly is a social music player for your browser. You can listen to your mp3, ogg, flac, wma, aac, itunes music from any browser. You can also listen to playlists your friends make as well as see cover-art for your music etc.

JukeFly uses Asio for it’s PC Server software that the user downloads onto the computer with their music. It operates as a secured web-server to stream the music to wherever the user is at. It’s worked really great and saved a lot of development time not to mention the code is all portable for future linux and OS X versions.

AbiWord - Cross Platform Word Processor

We use asio to perform the TCP transport between different AbiWord’s with our AbiCollab real-time document editing feature.

Wt - Web toolkit

Wt is a C++ widget library and application server for creating highly interactive web applications.

Wt allows the choice of using FastCGI in combination with a foreign web server, or a built-in wthttpd. This built-in httpd is based on the HTTP server example include in asio, modified mainly to support HTTP 1.1 and interact with Wt sessions.

We are so pleased with how it behaves that it is not only preferred during application development, but we also use it to deploy the high-volume Wt homepage and online examples. Since asio 0.3.9, they have been running without a single glitch. Importantly, also in embedded devices, asio allows us to achieve high throughput, even when only using a single thread of execution, by serving multiple connections simultaneously, and eliminates the requirement for separate webserver.

Dragon Intrusion Detection/Prevention System

Dragon is a Network and Host IDS and IPS, used by customers worldwide to monitor and respond to threats on both their networks and server machines. Administrators manage and deploy policy from a central console to their IDS/IPS infrastructure, which in large installations can feature dozens of Network Sensors and many hundreds of Host Sensors. Security events, ranging from suspicious activity to data on compromise attempts or worms, are channeled back to a central reporting point, from where statistics and reports are produced and can be monitored. For more information, see http://dragon.enterasys.com.

We are using Asio to underpin our enterprise middleware, which is responsible for communication between our management point and all (potentially hundreds) of deployed sensors. In stressful conditions, sensors can generate large bursts of security events (scores per second), and we are dependent on Asio for ensuring efficient and correct communication of these events back to our management point. Our middleware is running successfully on a number of Unix platforms, including Solaris, AIX, HPUX and Linux. We will switch our Windows middleware to it soon. We love Asio - thanks for the wonderful work.

Rep Invariant JAUS SDK

The Rep Invariant JAUS SDK (RI-JAUS) is a C++ library implementing the Joint Architecture for Unmanned Systems (JAUS) protocol for autonomous system interoperation. Users can create robots or other autonomous systems which are controllable via any JAUS Operator Control Unit, and Operator Control units can be created which can operate any compliant robot.

Asio operates our event loop, UDP network communications, and serial communications. It enables users of RI-JAUS to integrate the library easily with alternate event loops and infrastructures. We have been impressed with its robustness and flexibility. So far it has been capable of everything we needed it to do.

BigLog - Database and messaging System

A framework for capturing, storing, processing and distributing events (that is, changing data). It leverages Boost threads and Asio’s networking and IO service handling to provide a powerful abstraction layer to application design. A highly modular design built around message passing allows an event to be posted locally, or via a stub handler, networked. A multicast stub allows for clustering of any module for redundancy and load sharing, unicast UDP or TCP for direct off-loading (eg. client front-end processors).

PokerTH - Texas Hold’em Poker Game

PokerTH is a portable Open Source poker game writen in C++ using boost and Qt4. It supports offline games against computer players as well as LAN and internet games with up to 10 players per table.

The PokerTH dedicated server is using asio for all network I/O and timers. Several hundred players are being handled in a single thread - this also includes avatar picture uploads. Compared to a previous version of the server which used a multithreaded approach, CPU usage is now less than half while response time has improved notably.

asio is also used by the PokerTH client on Windows, Linux, Mac OS and BSD systems, and the asio I/O service supports the communication of the GUI and engine threads.

x0 - HTTP Web Server and Framework

x0 is a (currently Linux-only) HTTP web server and web server framework, designed with speed and scalarability in mind. This project is divided into three parts, the core framework (which any 3rd-party can link against), the plugins (that extend the core with custom features, like SSL, content compression, virtual hosting, CGI, etc…​), and the x0d UNIX daemon (which uses the other both to reflect a fully featured HTTP server).

x0 is currently still in development progress.

xiva - simple HTTP server and framework

xiva (acronym for HTTP Extended EVent Automata) is a simple HTTP server that notifies the browser about events on the server-side. It was developed in Yandex to work with real-time events such as updating news, weather or traffic informers.

As x0, it is under construction.

opendnp3 - A reference implementation of Distributed Network Protocol

The goal of the opendnp3 project is to provide the utility industry with a production ready reference implementation of Distributed Network Protocol (DNP3) under an open source license. The project is sponsored by Automatak.

The stack uses a completely asynchronous design. The core library is written in C++11 and has abstracted execution services, timers, and physical layers called the Platform Abstraction Layer (PAL). Asio provides opendnp3 with a very portable PAL implementation for systems with an OS.

Dr.Web for mail servers Unix - processing and filtering of incoming and outgoing mail traffic

Dr.Web for mail servers Unix is a unique modular solution for processing and filtering of incoming and outgoing mail traffic under Unix-systems (Linux/FreeBSD/Solaris(x86). Depending on the set of connected plug-ins it can filter e-mail for viruses and spam.

Dr.Web for mail servers Unix is compatible with Linux distributions (v. glibc 2.2 and higher), FreeBSD v.v.4.x and higher, Solaris 10 (for Intel platform only). Dr.Web for mail servers Unix is also compatible with the widest range of mail servers: CommuniGate Pro, Courier MTA, Exim, Postfix, QMail, Sendmail, ZMailer.

The modular structure of Dr.Web for mail servers Unix allows to use this product with any e-mail system, even if it is not found in the supported e-mail systems' list. An experienced user can develop his own plug-in and use Dr.Web for mail servers Unix with an e-mail system that officially is not supported. Moreover the product can be installed prior to the mail system %u2013 i.e. it can as well receive, send and analyze e-mail.

P2Engine - Peer-to-Peer Engine

P2engine is a flexible and efficient platform for making p2p system development easier. Reliable UDP, NAT Punch, Message Transport , Message Dispatcher, Fast and Safe Signal/Slot…​

QuickFAST — Open source implementation of the FAST protocol

QuickFAST is an Open Source native C++ implementation of the FAST Protocol [SM]. FAST(Fix Adapted for STreaming) protocol was developed by FIX Protocol Limited [FPL] (http://www.fixprotocol.org/fast/) as a way to reduce the bandwidth and network-latency required to distribute market data without incurring excessive CPU costs. It is being widely adopted in the financial industry.

Low latency is a critical factor in handling market data.

FAST encoded data is usually distributed via multicast or TCP data feeds. QuickFAST uses asio to allow a single process to accept data from multiple feeds simultaneously and efficiently.

Swift IM - XMPP Client & Library

Swift is a user-friendly, robust, high-quality, cross-platform and performant IM client using the XMPP messaging protocol. It relies on Boost heavily, and more specifically on Asio for all its networking needs. The underlying Swiften XMPP Library is also used for various other XMPP applications, which are more sensitive to scalability (server components, load testers, …​), and Asio fulfills all the needs there.

Blue Gene/Q System Software

The software managing Blue Gene/Q supercomputers relies heavily on Boost, and particularly for Asio for scalable network architecture. Blue Gene/Q is a multi-petaflop supercomputer with a very energy efficient design.

avhttp async http library

The avhttp is an http library based on asio, it is extermly simple and powerful to use. It is used by avbot, the same product produced by avplayer comunity, to perform async http request. avhttp is the best replacement to Urdl.

DDT3 Lua remote debugger

DDT3 is a C++ 11/14-based remote Lua debugger using asio non-Boost. The client runs on Windows, Linux and OSX, while the daemon runs on the same platforms plus Apple iOS, including physical devices and the iOS simulator. Thanks to Asio a Windows client can talk directly to an iPhone daemon, without OSX bridge.

Rippled - decentralized global payment system

Rippled is the P2P server software used to validate transactions sent through the Ripple protocol - an open-source, distributed payment protocol. It enables free and instant payments with no chargebacks and in any currency — including dollars, yen, euros, bitcoins, and even loyalty points. Ripple enables the world to move value like information moves today.

eScada HMI Solution

eScada The essential cross-platform HMI solution.

TCP/IP sockets guarantee a high level of connectivity between eScada server component and several other eScada client components.

Non-Boost Asio library version has been used.

ArangoDB

One Engine. One Query Language. Multiple Data Models.

ArangoDB is the open-source native multi-model database for graph, document, key/value and search needs."

from our web page. As to scalability, ArangoDB is a distributed database which needs to scale both horizontally across multiple machines as well as vertically across multi-core machines. For the latter, we use asio to build our server infrastructure.

Emilua

Emilua is a cross-platform execution engine for LuaJIT with support for async IO and flexible threading layout. Among its features there is TCP, UDP, IPv6, name resolution, TLS, pipes, serial ports, UNIX domain sockets, UNIX signals, filesystem API, sandboxes with Linux namespaces, and much more. One could see it as Boost.Asio bindings for Lua. One could also see it as a competitor to NodeJS that uses Lua instead of JavaScript.

Home | Download | Documentation | Source | Mailing List | Blog