domingo, 25 de noviembre de 2012

Obtener el nombre del host y la ip de una maquina con C++ y boost

Para obtener la direccion IP de una máquina en C++:
#include <netdb.h>
#include <arpa/inet.h>

char szBuffer[1024];
if(gethostname(szBuffer, sizeof(szBuffer)) != 0)
{
    std::cout << "error en gethostname" << std::endl;
}
else
{
    struct hostent *host = gethostbyname(szBuffer);
    if(host == NULL)
    {
        std::cout << "error en gethostbyname" << std::endl;
    }
    else
    {
        char * szLocalIP;
        szLocalIP = inet_ntoa (*(struct in_addr *)*host->h_addr_list);
        std::cout << "mi nombre de host es "<< host->h_name <<" y mi ip con c++   es " << szLocalIP << std::endl;
    }
}

Con boost:
#include "boost/asio.hpp"
using boost::asio::ip::tcp;

boost::asio::io_service io_service;
tcp::resolver resolver(io_service);
tcp::resolver::query query(boost::asio::ip::host_name(), "");
tcp::resolver::iterator iter = resolver.resolve(query);
tcp::resolver::iterator end; // End marker.
while (iter != end)
{
    tcp::endpoint ep = *iter++;
    std::cout << "mi nombre de host es " << boost::asio::ip::host_name() << " y mi ip con boost es " << ep.address() << std::endl;
}

No hay comentarios:

Publicar un comentario