[/ / Copyright (c) 2003-2007 Christopher M. Kohlhoff (chris at kohlhoff dot com) / / Distributed under the Boost Software License, Version 1.0. (See accompanying / file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) /] [section:using Using Boost.Asio] [heading Supported Platforms] The following platforms and compilers have been tested: * Win32 and Win64 using Visual C++ 7.1 and Visual C++ 8.0. * Win32 using MinGW. * Win32 using Cygwin. (`__USE_W32_SOCKETS` must be defined.) * Linux (2.4 or 2.6 kernels) using g++ 3.3 or later. * Solaris using g++ 3.3 or later. * Mac OS X 10.4 using g++ 3.3 or later. The following platforms may also work: * AIX 5.3 using XL C/C++ v9. * HP-UX 11i v3 using patched aC++ A.06.14. * QNX Neutrino 6.3 using g++ 3.3 or later. * Solaris using Sun Studio 11 or later. * Tru64 v5.1 using Compaq C++ v7.1. * Win32 using Borland C++ 5.9.2 [heading Dependencies] The following libraries must be available in order to link programs that use Boost.Asio: * Boost.System for the `boost::system::error_code` and `boost::system::system_error` classes. * Boost.Regex (optional) if you use any of the [link boost_asio.reference.read_until `read_until()`] or [link boost_asio.reference.async_read_until `async_read_until()`] overloads that take a `boost::regex` parameter. * [@http://www.openssl.org OpenSSL] (optional) if you use Boost.Asio's SSL support. Furthermore, some of the examples also require the Boost.Thread, Boost.Date_Time or Boost.Serialization libraries. [note With MSVC or Borland C++ you may want to add `-DBOOST_DATE_TIME_NO_LIB` and `-DBOOST_REGEX_NO_LIB` to your project settings to disable autolinking of the Boost.Date_Time and Boost.Regex libraries respectively. Alternatively, you may choose to build these libraries and link to them.] [heading Building Boost Libraries] You may build the subset of Boost libraries required to use Boost.Asio and its examples by running the following command from the root of the Boost download package: [pre bjam --with-system --with-thread --with-date_time --with-regex --with-serialization stage ] This assumes that you have already built `bjam`. Consult the Boost.Build documentation for more details. [/ [heading Compiling Programs With Boost.Asio] Consider the following minimal Boost.Asio program [^simple.cpp]: #include #include #include int main() { boost::asio::ip::tcp::iostream s("www.boost.org", "http"); s << "GET / HTTP/1.0\r\n"; s << "Host: www.boost.org\r\n"; s << "\r\n" << std::flush; std::cout << s.rdbuf(); return 0; } The following compiler commands may be used to build the program (note that the name of the `boost_system` library may vary depending on the compiler version): [table [ [OS] [Compiler] [Command] ] [ [FreeBSD] [g++] [[^g++ -I['boost_root] -pthread simple.cpp -L['boost_root]/stage/lib -lboost_system-gcc]] ] [ [Linux] [g++] [[^g++ -I['boost_root] -pthread simple.cpp -L['boost_root]/stage/lib -lboost_system-gcc41]] ] [ [Mac OS X] [g++] [[^g++ -I['boost_root] simple.cpp -L['boost_root]/stage/lib -lboost_system]] ] [ [Solaris] [g++] [[^g++ -I['boost_root] simple.cpp -L['boost_root]/stage/lib -lboost_system -lsocket -lnsl -lpthread]] ] [ [Windows] [MSVC 7.1] [[^cl /EHsc /GR /MT -I['boost_root] /D_WIN32_WINNT=0x500 simple.cpp /link /libpath:['boost_root]/stage/lib]] ] [ [Windows] [MSVC 8.0] [[^cl /EHsc /GR /MT /I['boost_root] /D_WIN32_WINNT=0x500 simple.cpp /link /libpath:['boost_root]/stage/lib]] ] ] ] [heading Macros] The macros listed in the table below may be used to control the behaviour of Boost.Asio. [table [[Macro][Description]] [ [`BOOST_ASIO_ENABLE_BUFFER_DEBUGGING`] [ Enables Boost.Asio's buffer debugging support, which can help identify when invalid buffers are used in read or write operations (e.g. if a std::string object being written is destroyed before the write operation completes). When using Microsoft Visual C++, this macro is defined automatically if the compiler's iterator debugging support is enabled, unless `BOOST_ASIO_DISABLE_BUFFER_DEBUGGING` has been defined. When using g++, this macro is defined automatically if standard library debugging is enabled (`_GLIBCXX_DEBUG` is defined), unless `BOOST_ASIO_DISABLE_BUFFER_DEBUGGING` has been defined. ] ] [ [`BOOST_ASIO_DISABLE_BUFFER_DEBUGGING`] [ Explictly disables Boost.Asio's buffer debugging support. ] ] [ [`BOOST_ASIO_DISABLE_DEV_POLL`] [ Explicitly disables [^/dev/poll] support on Solaris, forcing the use of a `select`-based implementation. ] ] [ [`BOOST_ASIO_DISABLE_EPOLL`] [ Explicitly disables `epoll` support on Linux, forcing the use of a `select`-based implementation. ] ] [ [`BOOST_ASIO_DISABLE_KQUEUE`] [ Explicitly disables `kqueue` support on Mac OS X and BSD variants, forcing the use of a `select`-based implementation. ] ] [ [`BOOST_ASIO_DISABLE_IOCP`] [ Explicitly disables I/O completion ports support on Windows, forcing the use of a `select`-based implementation. ] ] [ [`BOOST_ASIO_NO_WIN32_LEAN_AND_MEAN`] [ By default, Boost.Asio will automatically define `WIN32_LEAN_AND_MEAN` when compiling for Windows, to minimise the number of Windows SDK header files and features that are included. The presence of `BOOST_ASIO_NO_WIN32_LEAN_AND_MEAN` prevents `WIN32_LEAN_AND_MEAN` from being defined. ] ] [ [`BOOST_ASIO_NO_DEFAULT_LINKED_LIBS`] [ When compiling for Windows using Microsoft Visual C++ or Borland C++, Boost.Asio will automatically link in the necessary Windows SDK libraries for sockets support (i.e. [^ws2_32.lib] and [^mswsock.lib], or [^ws2.lib] when building for Windows CE). The `BOOST_ASIO_NO_DEFAULT_LINKED_LIBS` macro prevents these libraries from being linked. ] ] [ [`BOOST_ASIO_SOCKET_STREAMBUF_MAX_ARITY`] [ Determines the maximum number of arguments that may be passed to the `basic_socket_streambuf` class template's `connect` member function. Defaults to 5. ] ] [ [`BOOST_ASIO_SOCKET_IOSTREAM_MAX_ARITY`] [ Determines the maximum number of arguments that may be passed to the `basic_socket_iostream` class template's constructor and `connect` member function. Defaults to 5. ] ] ] [endsect]