#include <windows.h>
#include <winsock.h>
#include <stdio.h>
#include <stdlib.h>
#pragma comment(lib,"wsock32.lib")
void choice();
void iptoname();
void nametoip();
DWORD Startup()
{
WSADATA wsaData;
if(WSAStartup(MAKEWORD(1,1),&wsaData)!=0)
{
printf("Error:%d\n",WSAGetLastError);
return -1;
}
return 1;
}
void iptoname()
{
char ip[64];
struct hostent *host;
unsigned long lip;
system("cls");
puts(" =======================\n");
puts(" IP=======>Name\n");
puts(" =======================\n");
printf("IP>");
scanf("%s",ip);
fflush(stdin);
lip=inet_addr(ip);
host=gethostbyaddr((char*)&lip,4,AF_INET);
if(host==NULL)
printf("Error:%d\n",WSAGetLastError);
printf("%s==>%s\n",ip,host->h_name);
puts("-----------------------------------------");
puts("-=<任意键继续>=-");
getchar();
fflush(stdin);
choice();
}
void nametoip()
{
char name[64];
struct hostent *host;
system("cls");
puts(" =======================\n");
puts(" Name======>IP\n");
puts(" =======================\n");
printf("DNS>");
scanf("%s",name);
fflush(stdin);
host=gethostbyname(name);
if(host==NULL)
printf("Error:%d\n",WSAGetLastError);
printf("%s==>%s\n",name,inet_ntoa(*(struct in_addr*)(host->h_addr)));
puts("-----------------------------------------");
puts("-=<任意键继续>=-");
getchar();
fflush(stdin);
choice();
}
void choice()
{
int i;
system("cls");
puts("\n\t IP<-------->DNS");
puts("\t=========================");
puts("\t| |");
puts("\t| 1.DNS------->IP |");
puts("\t| |");
puts("\t| 2.IP-------->DNS |");
puts("\t| |");
puts("\t| 3.quit |");
puts("\t| |");
puts("\t=========================");
puts("\n=>Enter your choice");
scanf("%d",&i);
fflush(stdin);
if(i==1)
nametoip();
else if(i==2)
iptoname();
else if(i==3)
return;
else
{
puts("Input error!");
return;
}
}
void main()
{
if(Startup()==-1)
return;
choice();
WSACleanup();
}