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

The BSD Socket API and Boost.Asio

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

Погром. Библиотека Asio включает в себя низкоуровневый сокет-интерфейс на основе BSD сокет- API, который широко реализуется и поддерживается обширной литературой. Он также используется в качестве основы для сетевого API на других языках, таких как Java. Этот низкоуровневый интерфейс предназначен для поддержки разработки эффективных и масштабируемых приложений. Например, это позволяет программистам осуществлять более тонкий контроль над количеством системных вызовов, избегать ненужного копирования данных, минимизировать использование ресурсов, таких как потоки, и так далее.

Необеспеченные и подверженные ошибкам аспекты BSD сокета API не включены. Например, использование int для представления всех розеток не имеет безопасности типа. Представление сокета в Boost. Asio использует отдельный тип для каждого протокола, например, для TCP один будет использовать ip::tcp::socket, а для UDP используется ip::udp::socket.

В следующей таблице показано отображение между разъемом BSD API и Boost. Асио:

Элементы BSD Socket API

Эквиваленты в бусте. Asio

дескриптор розетки - int (POSIX) или SOCKET (Windows)

Для TCP: ip::tcp::socket, ip::tcp::acceptor

для UDP: ip::socket

basic_socket, basic_stream_socket, basic_datagram_socket, basic_socket

in_addr, in6_addr

ip::адрес, ip::адрес_v4, ip::адрес_v6

sockaddr_in, sockaddr_in6

Для TCP: ip::tcp::endpoint

Для UDP: ip::endpoint

ip::basic_endpoint

принятие()

Для TCP: ip::tcp::acceptor::accept()

basic_socket_acceptor::accept()

bind()

Для TCP: ip::tcp::acceptor::bind(), ip::tcp::socket::bind()

Для UDP: ip::udp::socket::bind()

basic_socket::bind()

закрыто()

Для TCP: ip::tcp::acceptor::close(), ip::tcp::socket::close()

Для UDP: ip::udp::socket::close()

basic_socket::close()

connect()

Для TCP: ip::tcp::socket::connect()

Для UDP: ip::udp::socket::connect()

basic_socket::connect()

getaddrinfo(), gethostbyaddr(), gethostbyname(), getnameinfo(), getservbyname()

Для TCP: ip::tcp::resolver::resolve(), ip::tcp::resolver::async_resolve()

Для UDP: ip::resolver::resolve(), ip::resolver_a_async_resolve()

ip::resolbas_resolver

gethostname()

ip::host_name()

getpeername()

Для TCP: ip::tcp::socket::remote_endpoint()

Для UDP: ip::udp::socket::remote_endpoint()

basic_socket::remote_endpoint()

getsockname()

Для TCP: ip::tcp::acceptor::local_endpoint(), ip::tcp::socket::socket::local_endpoint()

Для UDP: ip::udp::socket::socket_endpoint()

basic_socket::endlocal_endpoint()

getsockopt()

Для TCP: ip::tcp::acceptor::get_option(), ip::tcp::socket::get_option()

Для UDP: ip::udp::socket::get_option()

basic_socket::

inet_addr(), inet_aton(), inet_pton()

ip::адрес::from_string(), ip::address_v4::from_string(), ip_address_v6::from_string()

inet_ntoa(), inet_ntop()

ip::адрес::to_string(), ip::address_v4::to_string(), ip_address_v6::to_string()

ioctl()

Для TCP: ip::tcp::socket::io_control()

Для UDP: ip::udp::socket::io_control()

basic_socket::io_control()

listen()

Для TCP: ip::tcp::acceptor::listen()

basic_socket_acceptor::listen()

poll(), выбрать(), pselect()

io_service::run(), io_service::run_one(), io_service::poll(), io_service::poll_one()

Примечание: в сочетании с асинхронными операциями.

readv(), recv(), read()

::tcp::socket_some()

рекв от()

Для UDP: ip::udp::socket::receive_from(), ip::udp::socket::async_receive_from()

basic_datagram_socket::receive_from(), basic_datagram_socket::async_receive_from()

send(), write(), writev()

::tcp::socket::write_some(), ip::tcp::socket_a_send_send_2>

_tcp_s_t_s_d_2>

sendto()

Для UDP: ip::udp::socket::send_to(), ip::udp::socket::async_send_to()

basic_datagram_socket::send_to(), basic_data_gram_socket::async_send_to()

setsockopt()

Для TCP: ip::tcp::acceptor::set_option(), ip::tcp::socket::set_option()

Для UDP: ip::udp::socket::set_option()

basic_socket::set_option()

shutdown()

Для TCP: ip::tcp::socket::shutdown()

Для UDP: ip::udp::socket::shutdown()

basic_socket::shutdown()

sockatmark()

Для TCP: ip::tcp::socket::at_mark()

basic_socket::at_mark()

socket()

Для TCP: ip::tcp::acceptor::open(), ip::tcp::socket::open()

Для UDP: ip::dp::socket::open()

basic_socket::open()

socketpair()

local::connect_pair()

Примечание: только операционные системы POSIX.


PrevUpHomeNext

Статья The BSD Socket API and Boost.Asio раздела Boost.Asio Networking может быть полезна для разработчиков на c++ и boost.




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



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


реклама


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

Время компиляции файла: 2024-08-30 11:47:00
2025-05-19 18:24:38/0.0076990127563477/0