Boost.Asio 개요 - POSIX 전용 기능
POSIX 전용 기능 (POSIX-Specific Functionality) UNIX 도메인 소켓 스트림-지향 파일 디스크립터 포크 Boost.Asio 개요 Boost.Asio 홈
POSIX 전용 기능 (POSIX-Specific Functionality) UNIX 도메인 소켓 스트림-지향 파일 디스크립터 포크 Boost.Asio 개요 Boost.Asio 홈
시그널 핸들링 (Signal Handling) Boost.Asio는 signal_set이라는 클래스를 사용하여 시그널 핸들링을 지원한다. 프로그램은 세트에 하나 이상의 시그널을 추가한 다음 async_wait() 작업을 수행할 수 있다. 시그널 중 하나가 발생하면 지정된 핸들러가 호출된다. 동일한 시그널 번호를 여러 signal_set 개체에 등록할 수 있지만, 시그널 번호는 Boost.Asio에서만 사용해야 한다. void handler( const boost::system::error_code& error, int signal_number) { if (!error) { // A signal occurred. } } ... // Construct a signal set registered for pro..
직렬 포트 (Serial Ports) Boost.Asio에는 이식 가능한 방식으로 직렬 포트를 생성하고 조작하기 위한 클래스가 포함되어 있다. 예를 들어, 직렬 포트는 다음과 같이 열 수 있다: serial_port port(my_io_context, name); 여기서 name은 Windows에서는 "COM1", POSIX 플랫폼에서는 "/dev/ttyS0"와 같다. 일단 열리면, 직렬 포트를 스트림으로 사용할 수 있다. 이는 객체가 read(), async_read(), wrtie(), async_write(), read_until(), async_read_until() 중 사용 가능한 함수와 함께 사용될 수 있음을 의미한다. 직렬 포트 구현에는 포트의 전송 속도, 흐름 제어 유형, 패리티, 정지 비..
타이머 (Timers) 긴 시간 실행되는 I/O 작업에는 완료 기한이 주어지는 경우가 많다. 이러한 기한은 절대 시간으로 표현될 수 있지만, 현재 시간에서 비례하여 계산되는 경우가 많다. 간단한 예로, 타이머에서 상대 시간을 사용하여 동기식 대기 작업을 수행하려면 다음과 같이 작성한다: io_context i; ... deadline_timer t(i); t.expires_from_now(boost::posix_time::seconds(5)); t.wait(); 더 일반적으로 프로그램은 타이머에서 비동기식 대기 작업을 수행한다: void handler(boost::system::error_code ec) { ... } ... io_context i; ... deadline_timer t(i); t.exp..
BSD 소켓 API 및 Boost.Asio (The BSD Socket API and Boost.Asio) Boost.Asio 라이브러리에는 광범위한 문헌으로 널리 구현되고 지원되는 BSD 소켓 API를 기반으로 하는 저수준(low-level) 소켓 인터페이스가 포함되어 있다. 또한 JAVA와 같은 다른 언어로 된 네트워킹 API의 기반으로도 사용된다. 이 저수준(low-level) 인터페이스는 효율적이고 확장 가능한 응용 프로그램 개발을 지원하도록 설계되어 있다. 예를 들어, 프로그래머가 시스템 호출의 수를 보다 세밀하게 제어할 수 있고, 중복 데이터 복사를 방지하며, 스레드와 같은 리소스 사용을 최소화할 수도 있다. BSD 소켓 API의 불안전하고 오류 발생이 쉬운 측면은 포함하지 않는다. 예를 들어..