Я подключил несуществующий адрес, используя метод tcp :: socket :: connect, и он вернул WSAETIMEDOUT (10060), как и ожидалось. Но почему вызов tcp :: socket :: is_open () вернул 1 (true)? Я думаю, что он должен вернуть 0 (ложь), потому что не удалось установить соединение.
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.