問候。我剛剛開始使用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