|| Author: Psyco_Rabbit/EOF || Back to sources || View project folder ||
/***************************************************************************
* Copyright (C) 29/04/2006 by Psyco_Rabbit *
* PsycoRabbit@gmail.com *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the Berkeley Software Distribution (BSD) *
* License. *
* *
* This program is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY. *
* *
***************************************************************************/
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
#include <iostream>
#include <cstdlib>
#include <string.h>
#include <errno.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netdb.h>
#include <arpa/inet.h>
using namespace std;
int main()
{
struct hostent *host; //it contains informations about host
struct in_addr addr; //in this struct there is our address
char address[32];
string c;
do{
cout<<"DNS by Psyco_Rabbit"<<endl;
cout<<"1-hostname --> ip"<<endl;
cout<<"2-ip --> hostname"<<endl;
string i;
cin>>i;
while (i!="1" && i!="2"){
cout<<"Type 1 or 2!"<<endl;
cin>>i;
}
char s[32];
cout<<"Type address:"<<endl;
cin>>s;
if (i=="1"){
if ((host=gethostbyname(s))==NULL) //system call to obtain ip address by hostname
herror("gethostbyname");
else{
inet_ntop(AF_INET,host->h_addr,address,sizeof(address)); //transform h_addr in a readable format
cout<<address<<endl;
}
}
if (i=="2"){
if ((inet_aton(s, &addr))==0)
herror("inet_aton");
if ((host=gethostbyaddr(&addr,sizeof(addr),AF_INET))==NULL) //system call to obtain hostname by ip address
herror("gethostbyaddr");
else cout<<host->h_name<<endl;
}
cout<<"Do you want to continue? y/n"<<endl;
cin>>c;
while (c!="n" && c!="y")
cin>>c;
}while (c!="n");
return EXIT_SUCCESS;
}