#include #include #include int main(int, char**) { Gio::init(); std::vector< Glib::RefPtr > inet_addresses = Gio::Resolver::get_default()->lookup_by_name("www.google.com"); for(unsigned i = 0; i < inet_addresses.size(); i++) { std::cout << "Address #" << i << ": " << inet_addresses[i]->to_string() << "." << std::endl; Glib::RefPtr socket = Gio::Socket::create(Gio::SOCKET_FAMILY_IPV4, Gio::SOCKET_TYPE_STREAM, Gio::SOCKET_PROTOCOL_TCP); Glib::RefPtr address = Gio::InetSocketAddress::create(inet_addresses[i], 443); socket->connect(address); if(!socket->is_connected()) { std::cout << "Could not connect socket to " << address->get_address()->to_string() << "." << std::endl; continue; } Glib::RefPtr conn = Glib::RefPtr::cast_dynamic(Gio::SocketConnection::create(socket)); if(conn && conn->is_connected()) { std::cout << "Successfully established connection to " << address->get_address()->to_string() << ":" << address->get_port() << "." << std::endl; try { Glib::RefPtr tls_connection = Gio::TlsClientConnection::create(conn, address); } catch (const Gio::TlsError& error) { std::cout << "Exception caught: " << error.what() << "." << std::endl; return EXIT_FAILURE; } conn->close(); } } return EXIT_SUCCESS; }