이동 가능 I/O 개체 (Movable I/O Objects) 이동 지원이 가능할(rvalue 참조를 통해) 경우, Boost.Asio는 소켓, 직렬 포트, POSIX 디스크립터와 Windows 핸들의 이동 생성 및 할당을 허용한다. 이동 지원을 허용하면 다음과 같은 코드를 작성할 수 있다: tcp::socket make_socket(io_context& i) { tcp::socket s(i); ... std::move(s); } 또는: class connection : public enable_shared_from_this { private: tcp::socket socket_; ... public: connection(tcp::socket&& s) : socket_(std::move(s)) {} ....
SSL Boost.Asio에는 기본 SSL 지원을 위한 클래스 및 클래스 템플릿이 포함되어 있다. 이러한 클래스는 기존 스트림 (TCP 소켓과 같은) 위에 계층화되어 암호화된 통신을 허용한다. 암호화된 스트림이 생성되기 전에, 응용프로그램은 SSL 컨텍스트 개체를 생성해야 한다. 이 개체는 검증 모드, 인증서 파일 등과 같은 SSL 옵션을 설정하는 데 사용된다. 예를 들어, 클라이언트 측 초기화는 다음과 같다: ssl::context ctx(ssl::context::sslv23); ctx.set_verify_mode(ssl::verify_peer); ctx.load_verify_file("ca.pem"); TCP 소켓으로 SSL을 사용하려면, 다음과 같이 작성할 수 있다: ssl::stream ssl_s..
객체 핸들 (Object HANDLEs) Boost.Asio는 HANDLE에서 다음 유형의 커널 객체에 대해 비동기식 대기 작업을 수행할 수 있는 Windows 지정 클래스를 제공한다: 알림 변경 (Change notification) 콘솔 입력 (Console input) 이벤트 (Event) 메모리 자원 알림 (Memory resource notofication) 프로세스 (Process) 세마포어 (Semaphore) 스레드 (Thread) 대기 가능 타이머 (Waitable timer) 예를 들어, 이벤트에 대해 비동기 작업을 수행하기 위해 다음과 같은 개체를 생성할 수 있다: HANDLE handle = ::CreateEvent(...); windows::object_handle file(my_..
임위-접근 핸들 (Random-Access HANDLEs) Boost.Asio는 일반 파일을 참조하는 HANDLE에서 비동기식 읽기/쓰기 작업을 수행할 수 있는 Windows 전용 클래스를 제공한다. 예를 들어, 파일로 비동기식 작업을 수행하려면 다음과 같이 개체를 생성할 수 있다: HANDLE handle = ::CreateFile(...); windows::random_access_handle file(my_io_context, handle); read_some_at(), async_read_some_at(), write_some_at(), async_write_some_at() 멤버 함수 중 하나를 사용하여 핸들로 데이터를 읽거나 쓸 수 있다. 그러나 스트림용과 동등한 함수(read_some() 등..