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

Socket Iostreams

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 включает классы, которые реализуют iostreams поверх розеток. Они скрывают сложности, связанные с разрешением конечных точек, независимостью протокола и т. д. Чтобы создать соединение, можно просто написать:

ip::tcp::iostream stream("www.boost.org", "http");
if (!stream)
{
  // Can't connect.
}

Класс iostream также может использоваться в сочетании с акцептором для создания простых серверов. Например:

io_service ios;
ip::tcp::endpoint endpoint(tcp::v4(), 80);
ip::tcp::acceptor acceptor(ios, endpoint);
for (;;)
{
  ip::tcp::iostream stream;
  acceptor.accept(*stream.rdbuf());
  ...
}

Сроки могут быть установлены путем вызова<expires_at()>или<expires_from_now()>, чтобы установить крайний срок. Любые операции сокетов, которые происходят после истечения крайнего срока, помещают iostream в «плохое» состояние.

Например, простая клиентская программа:

ip::tcp::iostream stream;
stream.expires_from_now(boost::posix_time::seconds(60));
stream.connect("www.boost.org", "http");
stream << "GET /LICENSE_1_0.txt HTTP/1.0\r\n";
stream << "Host: www.boost.org\r\n";
stream << "Accept: */*\r\n";
stream << "Connection: close\r\n\r\n";
stream.flush();
std::cout << stream.rdbuf();

Не получится, если все операции сокетов вместе взятые займут более 60 секунд.

Если ошибка действительно произошла, функция iostream<error()>может быть использована для извлечения кода ошибки из последнего системного вызова:

if (!stream)
{
  std::cout << "Error: " << stream.error().message() << "\n";
}
See Also

ip::tcp::iostream,basic_socket_iostreamПримеры йостримов.

Notes

Эти шаблоны iostream поддерживают только<char>, а не<wchar_t>и не выполняют никакого преобразования кода.


PrevUpHomeNext

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




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



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


реклама


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

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