c语言 c++ 实现查看本地ip,外网ip, 本地主机名,查看http网址对应的ip

/*******************************************************************************
作者						:邓中强
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;
}

  

posted @ 2014-07-20 02:02  Please Call me 小强  阅读(2561)  评论(0编辑  收藏  举报