如何从套接字创建"ostream"?

sil*_*rgh 13 c++ sockets

在C++中,如果我有一个套接字,我该如何从中创建一个ostream对象?

我用google搜索了一些例子:http: //members.aon.at/hstraub/linux/socket++/docu/socket++_10.html

我试过了:

 sockbuf sb(sockfd);
 std::ostream outputStream(&sb);
Run Code Online (Sandbox Code Playgroud)

但我找不到.h文件和要与'sockbuf'链接的库.那是标准c ++库的一部分吗?

Kor*_*icz 19

您找到的网站是第三方非标准库.没有标准的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 );
Run Code Online (Sandbox Code Playgroud)

但是,如果使用Asio的Proactor进行异步操作,您将获得更多.


Chr*_*ung 6

标准C++(至少C++ 98)不以任何方式处理网络.所以,你必须做一些特定于平台的事情.

某些平台具有IOStreams实现,允许您从文件描述符创建流.在这种情况下,请使用套接字描述符作为文件描述符.

  • +1:我从未想过将`fd`传递给iostream Oo (4认同)