UNIX 도메인 소켓 (UNIX Domain Sockets)
Boost.Asio는 UNIX 도메인 소켓(로컬 소켓이라 알고 있는)에 대한 기본 지원을 제공한다. 가장 간단한 사용은 연결된 소켓 한 쌍을 생성하는 것이다. 다음 코드는:
local::stream_protocol::socket socket1(my_io_context); local::stream_protocol::socket socket2(my_io_context); local::connect_pair(socket1, socket2);
한 쌍의 스트림-지향 소켓을 생성한다. 데이터그램-지향 소켓에 대해 동일한 작업을 수행하려면 다음을 사용한다:
local::datagram_protocol::socket socket1(my_io_context); local::datagram_protocol::socket socket2(my_io_context); local::connect_pair(socket1, socket2);
UNIX 도메인 소켓 서버는 TCP 서버와 거의 같은 방식으로 엔드포인트에 승인기(acceptor)를 바인딩하여 생성할 수 있다:
::unlink("/tmp/foobar"); // Remove previous binding. local::stream_protocol::endpoint ep("/tmp/foobar"); local::stream_protocol::acceptor acceptor(my_io_context, ep); local::stream_protocol::socket socket(my_io_context); acceptor.accept(socket);
이 서버에 연결하는 클라이언트는 다음과 같다:
local::stream_protocol::endpoint ep("/tmp/foobar"); local::stream_protocol::socket socket(my_io_context); socket.connect(ep);
UNIX 도메인 소켓을 통한 파일 디스크립터나 자격 증명 전송은 Boost.Asio 내에서 직접 지원하지 않지만, native_handle() 멤버 함수를 사용하여 소켓의 기저 디스크립터에 접근하여 수행할 수 있다.
더 보기
local::connect_pair, local::datagram_protocol, local::datagram_protocol::endpoint, local::datagram_protocol::socket, local::stream_protocol, local::stream_protocol::acceptor, local::stream_protocol::endpoint, local::stream_protocol::iostream, local::stream_protocol::socket, UNIX domain sockets example.
참고
UNIX 도메인 소켓은 대상 운영 체제에서 지원하는 경우 컴파일 타임에만 사용할 수 있다. 프로그램은 BOOST_ASIO_HAS_LOCAL_SOCKETS 매크로를 테스트하여 지원 여부를 결정할 수 있다.
'Boost C++ Libraries > Boost.Asio' 카테고리의 다른 글
Boost.Asio - POSIX 전용 기능 - 포크 (0) | 2020.12.12 |
---|---|
Boost.Asio - POSIX 전용 기능 - 스트림-지향 파일 설명자 (0) | 2020.12.12 |
Boost.Asio 개요 - POSIX 전용 기능 (0) | 2020.12.11 |
Boost.Asio 개요 - 시그널 핸들링 (0) | 2020.12.11 |
Boost.Asio 개요 - 직렬 포트 (0) | 2020.12.11 |