Who is using Asio?
Here is a list of some projects that are using Asio. If you are using Asio, feel free to add your project's information 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!
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
libraries for multi-threading, asynchronous socket I/O, and timer. which are the building blocks for our large-scale, fault-tolerant distributed systems. Boost
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.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
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
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
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
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 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
) 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
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
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.
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
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).
is currently still in development progress.
xiva - simple HTTP server and framework
(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.
dnp3 - A reference implementation of Distributed Network Protocol
The goal of the dnp3
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 released and sponsored by Green Energy Corp
The stack uses a completely asynchronous design. All of open/read/write/close operations complete via a callback. Asio provides dnp3 with an asynchronous framework and cross-platform networking and serial support. This enables the execution of hundreds of parallel connections in a non-blocking manner with minimal thread overhead.
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.
P2P? Engine">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 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
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.