Boost logo

Boost :

From: Christopher Kohlhoff (chris_at_[hidden])
Date: 2004-09-13 01:12:45

Hi all,

In light of some of the recent discussion about sockets (e.g. the
"behond IOStreams" thread), I'd like to take this opportunity to
announce "asio". asio will be going live in a commercial system in a
little over a month, and I think it's now at a point where it is
suitable for use by a wider audience. I would like to think that asio
has potential as the basis of a boostified networking library, or that
at least it can inject some ideas into the discussion.

asio is a cross-platform library for doing network programming, using a
"modern" c++ style. It is designed to use an asynchronous I/O model for
virtually all operations, even when the OS lacks native asynchronous
I/O. The library is intended to ease the development of scalable
network applications through the use of a proactive event-driven

You can download asio from:

I have also put the generated documentation online at:

asio supports Win32 and Linux, and has been infrequently tested on
Solaris. It is free for any use.

Here is a sample usage of asio showing how to receive data on a socket:

  char buf[BUFSIZ];

  void handle_receive(asio::error& e, size_t bytes_recvd)
    if (!e) { /*...*/ }

  int start_receiving(asio::socket& s)
    s.async_recv(buf, BUFSIZ,

I have been working on asio for well over a year and, as I said, it
will be going into production in a commercial system in a little over a
month. For commercial reasons I can't give too much detail, but I can
say that asio has been used to develop a custom HTTP proxy that
supports hundreds of concurrent connections.

The inspiration for asio was the work of Alex Libman in developing a
"portable Proactor framework" for ACE (see
This is a Proactor that can use select or a similar synchronous event
demultiplexer if no more appropriate OS mechanism is available.


Boost list run by bdawes at, gregod at, cpdaniel at, john at