在C ++中,如果我有一个套接字,我怎样才能从中创建一个ostream对象?
我用google搜索了一些例子: http://members.aon.at/hstraub/linux/socket++/docu/socket++_10.html
我试过了:
sockbuf sb(sockfd);
std::ostream outputStream(&sb);
但我找不到.h文件和要与'sockbuf'链接的库。那是标准c ++库的一部分吗?
答案 0 :(得分: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 );
但是,如果使用Asio的Proactor进行异步操作,您将获得更多收益。
答案 1 :(得分:6)
标准C ++(至少C ++ 98)不以任何方式处理网络。所以,你必须做一些特定于平台的事情。
某些平台具有IOStreams实现,允许您从文件描述符创建流。在这种情况下,请使用套接字描述符作为文件描述符。
答案 2 :(得分:2)
它不是标准C ++库的一部分。在这里下载Socket ++:http://members.aon.at/hstraub/linux/socket++/(这是你粘贴的几个目录)