Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения

Support for Other Protocols

Boost , Boost.Asio , Networking

Boost C++ Libraries

...one of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

PrevUpHomeNext

Поддержка других протоколов сокетов (таких как Bluetooth или IRCOMM) может быть добавлена путем реализации требований типа протокола . Однако во многих случаях эти протоколы могут также использоваться с Boost. Поддержка общего протокола Асио. За это, Буст. Asio предлагает следующие четыре класса:

Эти классы реализуют требования типа протокола, но позволяют пользователю указывать семейство адресов (например, AF_INET) и тип протокола (например, IPPROTO_TCP) во время выполнения. Например:

boost::asio::generic::stream_protocol::socket my_socket(my_io_service);
my_socket.open(boost::asio::generic::stream_protocol(AF_INET, IPPROTO_TCP));
...

Шаблон класса конечной точки boost::asio::generic::basic_endpoint, включен для поддержки этих классов протоколов. Эта конечная точка может содержать любой другой тип конечной точки, при условии, что ее собственное представление вписывается в объект sockaddr_storage. Этот класс также преобразуется из других типов, реализующих конечную точку . Типовые требования:

boost::asio::ip::tcp::endpoint my_endpoint1 = ...;
boost::asio::generic::stream_protocol::endpoint my_endpoint2(my_endpoint1);

Конверсия неявная, чтобы поддержать следующие случаи использования:

boost::asio::generic::stream_protocol::socket my_socket(my_io_service);
boost::asio::ip::tcp::endpoint my_endpoint = ...;
my_socket.connect(my_endpoint);
C++11 Move Construction

При использовании C++11 можно выполнить конструкцию перемещения из разъема (или акцептора) объекта для преобразования в более общий тип разъема (или акцептора) протокола. Если конвертация протокола действительна:

Protocol1 p1 = ...;
Protocol2 p2(p1);

затем допускается соответствующее преобразование сокета:

Protocol1::socket my_socket1(my_io_service);
...
Protocol2::socket my_socket2(std::move(my_socket1));

Например, одним из возможных преобразований является преобразование сокета TCP в общий ориентированный на поток сокет:

boost::asio::ip::tcp::socket my_socket1(my_io_service);
...
boost::asio::generic::stream_protocol::socket my_socket2(std::move(my_socket1));

Эти преобразования также доступны для назначения движения.

Эти преобразования не ограничиваются приведенными выше общими классами протоколов. Определяемые пользователем протоколы могут воспользоваться этой функцией, аналогично гарантируя, что преобразование из Протокол1 в Протокол2 является действительным, как указано выше.

Accepting Generic Sockets

Для удобства функции акцептора сокета принимают() и async_accept() могут непосредственно приниматься в разъем другого типа протокола при условии, что соответствующее преобразование протокола является действительным. Например, поддерживается следующее, поскольку протокол boost::asio::tcp конвертируем в boost::generic::stream_protocol:

boost::asio::ip::tcp::acceptor my_acceptor(my_io_service);
...
boost::asio::generic::stream_protocol::socket my_socket(my_io_service);
my_acceptor.accept(my_socket);
See Also

generic::, generic::raw_protocol, genericseq_packet_protocol, generic::stream_protocol, protocol type requirements.


PrevUpHomeNext

Статья Support for Other Protocols раздела Boost.Asio Networking может быть полезна для разработчиков на c++ и boost.




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.



:: Главная :: Networking ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-30 11:47:00
2025-05-19 18:11:28/0.026327133178711/1