/*******************************************************************************
作者 :邓中强
Email :1246747572@qq.com
QQ :1246747572
博客 :http://www.cnblogs.com/dzqdzq/
时间 :2014/01/01
功能
*******************************************************************************/
#include "cstdio"
#include "cstring"
#include "string"
#include "winsock2.h"
#pragma comment(lib, "urlmon.lib")
using namespace std;
// 获取本机ip
char* getlocal_ip()
{
char *ret;
char host_name[256] = "";
WSADATA wsaData;
WSAStartup(0x101, &wsaData);
if (!gethostname(host_name, 256))
{
ret = inet_ntoa(*((struct in_addr*)gethostbyname(host_name)->h_addr));
}
WSACleanup();
return ret;
}
// 获取本机名
char* getlocal_name(char *name,int len)
{
WSADATA wsaData;
WSAStartup(0x101, &wsaData);
gethostname(name, len);
WSACleanup();
return name;
}
// 获取公网ip (也叫外网ip)
char* getPub_ip(char *ip)
{
const char* dest = "<code>";
const char* dest1 = "</code>";
const char* szFileName = "D:/ip.txt";
if (URLDownloadToFile(NULL, "http://www.ip.cn/", szFileName, 0, NULL) == S_OK)
{
FILE *fp = fopen(szFileName, "r");
if (fp)
{
char line[512];
while (fgets(line,512,fp))
{
char *fd = strstr(line, dest);
if (fd)
{
char* star = fd + strlen(dest);
strncpy(ip,star,strstr(star,dest1)-star);//16
break;
}
}
fclose(fp);
remove(szFileName);// 删除文件
}
}
return ip;
}
// 获取某个网站的ip
char* getipFromHttp(char *http,char *result)
{
const char* fileName = "D:/1.txt";
string cmd = string("ping ") + http + string(">") + fileName;
system(cmd.c_str());
FILE *fp = fopen(fileName,"r");
if (fp)
{
char line[512];
while (fgets(line,512,fp))
{
char *fd = strchr(line,'[');
if (fd)
{
char *star = fd + 1;
strncpy(result, star, strchr(star,']')-star);
break;
}
}
fclose(fp);
remove(fileName);
}
return NULL;
}
int main()
{
char name[28] = "";
printf("本地IP:%s\n", getlocal_ip());
printf("主机名:%s\n", getlocal_name(name, 28));
char ip[25] = "";
printf("外网:%s\n", getPub_ip(ip));
char *http = "www.taobao.com";
getipFromHttp(http, ip);
printf("%s --DNS--> %s\n",http,ip);
system("pause");
return 0;
}