Written by Andreas Haberstroh
Thursday, 23 August 2007
Rerelease of the asio::dns Library as Boost-Net-Dns Library. New version is 0.1.1, adds some features and fixes some things too.
Boost-Net-Dns is a cross-platform C++ library for sending and receiving DNS resource records.
License Boost-Net-Dns is release under the Boost Software License .
Dependencies Boost-Net-Dns requires Boost version 1.33 or later and asio version 0.3.8.
Using Boost-Net-Dns The Boost-Net-Dns library is relatively simplistic in design. A simple example of making a DNS request is as follows:
#include <boost/asio.hpp> #include <boost/net/resolve.hpp> using namespace boost::asio;
using namespace boost::net;
int main(int argc, char* argv[]) { dns::message dns_message("cnn.com" , dns::type_a ); dns::resolve resolver; ip::address a_gltd_servers_net( ip::address::from_string("192.5.6.30" ) ); resolver.addServer( a_gltd_servers_net ); ip::address b_gltd_servers_net( ip::address::from_string("192.33.14.30" ) ); resolver.addServer( b_gltd_servers_net ); ip::address c_gltd_servers_net( ip::address::from_string("192.26.92.30" ) ); resolver.addServer( c_gltd_servers_net ); ip::address d_gltd_servers_net( ip::address::from_string("192.31.80.30" ) ); resolver.addServer( d_gltd_servers_net ); ip::address e_gltd_servers_net( ip::address::from_string("192.12.94.30" ) ); resolver.addServer( e_gltd_servers_net ); ip::address f_gltd_servers_net( ip::address::from_string("192.35.51.30" ) ); resolver.addServer( f_gltd_servers_net ); ip::address g_gltd_servers_net( ip::address::from_string("192.42.93.30" ) ); resolver.addServer( g_gltd_servers_net ); ip::address h_gltd_servers_net( ip::address::from_string("192.54.112.30" ) ); resolver.addServer( h_gltd_servers_net ); ip::address i_gltd_servers_net( ip::address::from_string("192.43.172.30" ) ); resolver.addServer( i_gltd_servers_net ); ip::address j_gltd_servers_net( ip::address::from_string("192.48.79.30" ) ); resolver.addServer( j_gltd_servers_net ); ip::address k_gltd_servers_net( ip::address::from_string("192.52.178.30" ) ); resolver.addServer( k_gltd_servers_net ); ip::address l_gltd_servers_net( ip::address::from_string("192.41.162.30" ) ); resolver.addServer( l_gltd_servers_net ); dns::message dns_response = resolver.query(dns_message); return 0; }
Changes since 1.0 1.1 boost::ptr_vector to handle dns::message::records_t.
throw in readDomainName when dns packet is mangled
unknown_resource for unknown RR's. Following 1035's specification
A6 and SRV support for resource records
Memory leak in dns::message::records_t
Namespace now changed to boost::net::dns as per Christopher Kohlhoff's email dated 7/19/2007 10:05 PM. Planning on implementing DHCP library to fit into the boost::net namespace.
Last Updated ( Wednesday, 27 February 2008 )