在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进行异步操作,您将获得更多.
标准C++(至少C++ 98)不以任何方式处理网络.所以,你必须做一些特定于平台的事情.
某些平台具有IOStreams实现,允许您从文件描述符创建流.在这种情况下,请使用套接字描述符作为文件描述符.