Как я могу создать 'ostream' из сокета?

В C++, если у меня есть сокет, как я могу создать объект ostream из него?

Я погуглил некоторый пример: http://members.aon.at/hstraub/linux/socket++/docu/socket++_10.html

И я попробовал:

 sockbuf sb(sockfd);
 std::ostream outputStream(&sb);

Но я не могу найти, что.h файл и библиотека связываются с для 'sockbuf'. Та часть стандартной библиотеки C++?

13
задан mpromonet 1 December 2015 в 23:18
поделиться

3 ответа

Сайт, который вы нашли, является сторонней нестандартной библиотекой. Стандартной библиотеки сокетов на C++ нет.

Однако, если вы хотите получить как можно более близкое к стандартному (и мощное!) решение, вам следует попробовать Boost.Asio. Он был предложен для включения в стандартную библиотеку (TR2). Вот пример на основе iostream:

boost::asio::ip::tcp::iostream stream("www.example.org", "http");
stream << "GET / HTTP/1.0\r\nHost: www.boost.org\r\n\r\n" << std::flush;

std::string response;
std::getline( stream, response );

Однако, при использовании проактора Asio's Proactor для асинхронной работы, Вы получите гораздо больше.

19
ответ дан 1 December 2019 в 21:11
поделиться

Она не входит в стандартную библиотеку C++. Скачать Socket++ можно здесь: http://members.aon.at/hstraub/linux/socket++/ (это несколько каталогов из того, что вы вставили)

.
2
ответ дан 1 December 2019 в 21:11
поделиться

Стандартный C++ (по крайней мере, C++98) никак не связан с сетевым взаимодействием. Поэтому вам придется делать что-то специфическое для конкретной платформы.

Некоторые платформы имеют реализацию IOStreams, которая позволяет вам создавать поток из дескриптора файла. В этом случае используйте дескриптор сокета в качестве дескриптора файла.

6
ответ дан 1 December 2019 в 21:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: