Повышаю. Asio обеспечивает базовую поддержку сокетов домена UNIX (также известных как локальные сокеты). Самое простое использование включает в себя создание пары подключенных розеток. Следующий код:
local::stream_protocol::socket socket1(my_io_service);
local::stream_protocol::socket socket2(my_io_service);
local::connect_pair(socket1, socket2);
Будет создана пара ориентированных на поток сокетов. Чтобы сделать то же самое для сокетов, ориентированных на дейтаграммы, используйте:
local::datagram_protocol::socket socket1(my_io_service);
local::datagram_protocol::socket socket2(my_io_service);
local::connect_pair(socket1, socket2);
Сервер сокета домена UNIX может быть создан путем связывания акцептора с конечной точкой, во многом так же, как это делается для сервера TCP:
::unlink("/tmp/foobar");
local::stream_protocol::endpoint ep("/tmp/foobar");
local::stream_protocol::acceptor acceptor(my_io_service, ep);
local::stream_protocol::socket socket(my_io_service);
acceptor.accept(socket);
Клиент, который подключается к этому серверу, может выглядеть так:
local::stream_protocol::endpoint ep("/tmp/foobar");
local::stream_protocol::socket socket(my_io_service);
socket.connect(ep);
Передача файловых дескрипторов или учетных данных через разъемы домена UNIX напрямую не поддерживается в Boost. Asio, но может быть достигнута путем доступа к базовому дескриптору гнезда с помощьюnative_handle()Функция члена.
Местный::connect_pair,местный::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.
Сокеты домена UNIX доступны только во время компиляции, если они поддерживаются целевой операционной системой. Программа может тестировать макрос<BOOST_ASIO_HAS_LOCAL_SOCKETS
>, чтобы определить, поддерживаются ли они.