튜토리얼 (Tutorial) 기본 기술 (Basic Skills) 첫 번째 섹션의 튜토리얼 프로그램은 asio 툴킷을 사용하는데 필요한 기본 개념을 소개한다. 복잡한 네트워크 프로그래밍 세계로 빠져들기 전에, 이 튜토리얼 프로그램은 간단한 비동기 타이머를 사용하여 기본 기술을 설명한다. Timer.1 - 타이머를 동기식으로 사용 Timer.2 - 타이머를 비동기식으로 사용 Timer.3 - 핸들러에 대한 바인딩 인수 Timer.4 - 핸들러로 멤버 함수를 사용 Timer.5 - 멀티스레드 프로그램에서 핸들러 동기화 소켓 소개 (Introduction to Sockets) 두 번째 섹션의 튜토리얼 프로그램은 asio를 사용하여 간단한 클라이언트와 서버 프로그램을 개발하는 방법을 보여준다. 이 튜토리얼 프로..
Boost.Asio 사용 (Using Boost.Asio) 지원되는 플랫폼 (Supported Platforms) 다음 플랫폼과 컴파일러 조합은 정기적으로 테스트된다: g++ 4.1 이상 사용하는 Linux clang 3.2 이상 사용하는 Linux g++ 4.1 이상 사용하는 FreeBSD Xcode 8 이상 사용하는 macOS Visual C++9.0 이상 사용하는 Win32 g++ 4.1 이상(MinGW) 사용하는 Win32 Visual C++ 9.0 이상 사용하는 Win64 다음 플랫폼도 작동할 수 있다: AIX Android HP-UX iOS NetBSD OpenBSD QNX Neutrino Solaris Tru64 Cygwin을 사용하는 Win32 (__USE_W32_SOCKET가 정의되어야 ..
플랫폼별 구현 정보 (Platform-Specific Implementation Notes) 이 섹션에는 기본 디멀티플렉싱 메커니즘, 내부적으로 생성된 스레드 수 및 스레드 생성 시기와 같은 플랫폼별 세부 구현 정보가 나열되어 있다. Linux Kernel 2.4 디멀티플렉싱 메커니즘: 디멀티플렉싱에 select를 사용한다. 이는 프로세스 내에 파일 디스크립터 수가 FD_SETSIZE를 초과할 수 없음을 의미한다. 스레드: select를 사용한 디멀티플렉싱은 io_context::run(), io_context::run_one(), io_context::poll() 또는 io_context::poll_one()을 호출하는 스레드 중 하나에서 수행된다. 각 io_context에서 추가한 스레드는 비동기식 ..
퓨쳐 (Futures) boost::asio::use_future 특수 값은 비동기 작업의 개시 함수에서 C++11 std::future를 반환하기 위한 최고 수준의 지원을 제공한다. boost::asio::use_future를 사용하려면, 일반 완료 핸들러 대신에 비동기 작업에 전달한다. 예를 들면: std::future length = my_socket.async_read_some(my_buffer, boost::asio::use_future); 핸들러 서명은 다음과 같다: void handler(boost::system::error_code ec, result_type result); 개시 함수는 result_type에 대한 std::future 템플릿을 반환한다. 위의 예에서 이것은 std::si..
크로노 (Chrono) Boost.Asio는 basic_waitable_timer 클래스 템플릿을 통해 std::chrono 기능 기반의 타이머를 제공한다. typedefs system_timer, steady_timer 그리고 high_resolution_timer는 각각 표준 클럭 system_clock, steady_clock 그리고 high_resolution_clock을 사용한다. std::chrono 기능에 대한 지원은 -std=c++0x 또는 -std=gnu++0x 컴파일러 옵션을 사용하는 경우 g++ 4.6 이상에서 자동으로 활성화된다. (g++의 경우 초안 표준에서 monotonic_clock이 steady_clock 대신 사용된다.) BOOST_ASIO_DISABLE_STD_CHRONO..