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

/*******************************************************************************
作者						:邓中强
Email						:[email protected]
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;
}

  

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

时间: 2024-11-07 01:38:00

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

手机APP应用外网访问本地WEB应用

手机APP应用外网访问本地WEB应用 本地安装了WEB服务端,手机APP应用只能在局域网内访问本地WEB,怎样使手机APP应用从公网也能访问本地WEB? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动WEB服务端程序 默认安装的WEB服务端的端口是80. 2. 实现步骤 2.1 下载并解压holer软件包 Holer软件包:holer-xxx.tar.gz Holer支持各种OS系统平台,请选择跟本地OS类型匹配的holer软件包. 2.2 获取holer access key信

holer实现外网访问本地网站

外网访问本地网站 本地搭建了网站,只能在局域网内访问,怎样从公网也能访问内网网站? 本文将介绍使用holer实现的具体步骤. 1. 准备工作 1.1 安装并启动网站服务端 默认搭建的网站服务端端口是80. 2. 实现步骤 2.1 下载并解压holer软件包 Holer软件包:holer-xxx.tar.gz Holer支持各种OS系统平台,请选择跟本地OS类型匹配的holer软件包. 2.2 获取holer access key信息 在holer官网上申请专属的holer access key或

yum本地源和外网源的配置方法

本地源配置方法:以光盘里rpm举例(这里使用虚拟机演示) 1.挂载一个iso的镜像 把光盘挂载到一个目录里,然后进入/etc/yum.reps.d/目录下,创建一个以 .repo结尾的文件,内容如下:(此文件为最简写法) YUM: Yellowdog Update Modifier,rpm的前端程序,可解决软件包相关依赖性,可在多个库之间定位软件包,up2date的替代工具 yum repository: yum repo,存储了众多rpm包,以及包的相关的元数据文件(放置于特定目录repoda

Android如何获取外网和本地的ip

/** * 获取外网的IP */ public static String GetNetIp() { URL infoUrl = null; InputStream inStream = null; String ipLine = ""; HttpURLConnection httpConnection = null; try { infoUrl = new URL("http://ip168.com/"); URLConnection connection = i

路由映射..外网访问本地站点..

登陆本地路由..按照下图操作.. 如果路由不一样的..大概就是这样的方向..找虚拟服务就好 外部端口是自己随便定的..别跟系统端口冲突就好.. 内部端口如果是站点服务的话就是端口 80  远程桌面的话是 3389 在这之后..外网访问域名时指向的就是你本地的机器了..因为有你的局域网IP和端口号

Holer实现外网访问本地SQLServer数据库

外网访问内网SQLServer数据库 内网主机上安装了SQLServer数据库,只能在局域网内访问,怎样从公网也能访问本地SQLServer数据库? 本文将介绍使用holer实现的具体步骤. 1. 准备工作 1.1 安装并启动SQLServer数据库 默认安装的SQLServer数据库端口是1433. 2. 实现步骤 2.1 下载并解压holer软件包 Holer软件包:holer-xxx.tar.gz Holer支持各种OS系统平台,请选择跟本地OS类型匹配的holer软件包. 2.2 获取h

Holer实现外网访问本地RESTful API

外网访问内网RESTful API 内网主机上安装了RESTful API服务端程序,只能在局域网内访问,怎样从公网也能访问本地RESTful API? 本文将介绍使用holer实现的具体步骤. 1. 准备工作 1.1 安装并启动RESTful API服务端程序 默认安装的RESTful API服务端软件端口是8088. 2. 实现步骤 2.1 下载并解压holer软件包 Holer软件包:holer-xxx.tar.gz Holer支持各种OS系统平台,请选择跟本地OS类型匹配的holer软件

Holer实现外网访问本地PostgreSQL数据库

外网访问内网PostgreSQL数据库 内网主机上安装了PostgreSQL数据库,只能在局域网内访问,怎样从公网也能访问本地PostgreSQL数据库? 本文将介绍使用holer实现的具体步骤. 1. 准备工作 1.1 安装并启动PostgreSQL数据库 默认安装的PostgreSQL数据库端口是5432. 2. 实现步骤 2.1 下载并解压holer软件包 Holer软件包:holer-xxx.tar.gz Holer支持各种OS系统平台,请选择跟本地OS类型匹配的holer软件包. 2.

Holer实现外网访问本地WampServer

外网访问内网WampServer 内网主机上安装了WampServer,只能在局域网内访问,怎样从公网也能访问本地WampServer? 本文将介绍使用holer实现的具体步骤. 1. 准备工作 1.1 安装并启动WampServer 默认安装的WampServer端口是80. 2. 实现步骤 2.1 下载并解压holer软件包 Holer软件包:holer-xxx.tar.gz Holer支持各种OS系统平台,请选择跟本地OS类型匹配的holer软件包. 2.2 获取holer access