我创建一个这样的套接字:
client<THeader>::client(boost::asio::io_service* io_service, std::string const & host, int port)
:_host(host),
_port(port),
_socket(boost::asio::ip::tcp::socket(*io_service)),
_io_service(io_service)
{
boost::system::error_code ec;
boost::asio::socket_base::keep_alive option(true);
_socket.set_option(option, ec);
bool is_set = option.value();
}
is_set
是true
。但是ec
具有非零值。我怎么理解这个?之后我可以使用套接字。它似乎工作正常。
ec.what()= set_option: The file handle supplied is not valid
答案 0 :(得分:2)
您需要open
套接字才能使用它。在调用open
之前,不会创建实际的底层套接字描述符。
或者使用constructor that both create the object and opens the socket。