【发布时间】:2019-05-27 07:28:35
【问题描述】:
我使用 tcp::socket::connect 方法连接了一个不存在的地址,它按预期返回了 WSAETIMEDOUT(10060)。但是为什么调用 tcp::socket::is_open() 返回 1(true) ?我认为它应该返回 0(false),因为建立连接失败。
int main(int argc, char* argv[]) {
boost::asio::io_context context;
tcp::socket socket(context);
/*non-existent address 111.111.111.111:8080*/
tcp::endpoint endpoint(address::from_string("111.111.111.111"), 8080);
error_code result_error;
socket.connect(endpoint, result_error);
/* error code: WSAETIMEDOUT [10060]
* description: established connection failed because connected host has failed to respond
*/
std::cout << "error code: " << result_error.value()<< result_error.message() << std::endl;
/*returned 1*/
std::cout << "is_open returned: "<< socket.is_open() << std::endl;
}
我希望 is_open 的输出为 0,但实际输出为 1。
【问题讨论】:
-
作为这个 boost 文档,is_open 函数只是检查套接字是否打开。 boost.org/doc/libs/1_66_0/doc/html/boost_asio/reference/…
标签: c++ boost-asio