问候。我刚刚开始使用boost :: asio库,并遇到了与boost :: asio :: ip :: tcp :: iostream相关的一些早期难题。升压asio ip tcp iostream错误检测
我的问题有两个部分:
1)一个人如何使用连接简单的主机和端口号对iostream?
我可以使client和server [boost.org]示例工作正常编码。服务器明确指定端口:
boost::asio::io_service io_service;
tcp::endpoint endpoint(tcp::v4(), 13);
tcp::acceptor acceptor(io_service, endpoint);
端口13是“白天”服务的着名端口。
客户端例如通过指定主机和服务名连接:
tcp::iostream s(argv[1], "daytime");
对于我自己的应用程序,我想放在服务器中的任意端口上,并通过数字连接,如下图所示:
服务器:
boost::asio::io_service io_service;
tcp::endpoint endpoint(tcp::v4(), port);
tcp::acceptor acceptor(io_service, endpoint);
acceptor.accept(*this->socketStream.rdbuf());
...
客户:
boost::asio::ip::tcp::iostream sockStream;
...
sockStream.connect("localhost", port);
...
如果在客户端中,我尝试直接指定端口号(而不是名称服务),则流无法连接。有没有办法做到这一点?我不清楚连接的论据可能/应该是什么。
2.)测试iostream :: connect调用成功的首选方法是什么?
该函数返回void,并且不引发异常。到目前为止,我设计的唯一方法是测试stream.fail()和/或stream.good()。这是做到这一点的方式,还是有其他一些方法。
对其中一项或两项的建议将不胜感激。另外,如果我忽视相关文档和/或示例,那将会很不错。到目前为止,我还没有通过阅读图书馆文档或搜索“网络”来回答这些问题。
感谢您的帮助。那么有没有办法使用tcp :: socket并将其放入tcp :: iostream中? – 2009-06-24 20:04:45