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

  

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

  1. JS获取客户端IP地址、MAC和主机名【转】

    JS获取客户端IP地址.MAC和主机名 引用:JS获取客户端IP地址.MAC和主机名的7个方法汇总 利用搜狐接口 <html> <head> <meta http-equ ...

  2. 外网访问本地服务器下的web应用

    让本地服务器可以在外网访问的方式有很多,介绍其中一种: 由于本人是在自己电脑上装了一个虚拟机, 测试环境为:虚拟机作为服务器,服务器中装了一个禅道,虚拟机IP192.168.2.221,本人通过tpl ...

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

    手机APP应用外网访问本地WEB应用 本地安装了WEB服务端,手机APP应用只能在局域网内访问本地WEB,怎样使手机APP应用从公网也能访问本地WEB? 本文将介绍具体的实现步骤. 1. 准备工作 1 ...

  4. holer实现外网访问本地网站

    外网访问本地网站 本地搭建了网站,只能在局域网内访问,怎样从公网也能访问内网网站? 本文将介绍使用holer实现的具体步骤. 1. 准备工作 1.1 安装并启动网站服务端 默认搭建的网站服务端端口是8 ...

  5. [原创]K8Cscan插件之Cisco思科设备扫描(IP、设备型号、主机名、Boot、硬件版本)

    [原创]K8 Cscan 大型内网渗透自定义扫描器 https://www.cnblogs.com/k8gege/p/10519321.html Cscan简介:何为自定义扫描器?其实也是插件化,但C ...

  6. 详述Linux配置静态IP、设置DNS和主机名(一)

    Linux配置静态IP.设置DNS和主机名首先要找到配置文件,这是在Linux系统下进行工作的必须知道工作方式.后面一步步的跟着这个范例来进行配置相信你最终也会完成Linux配置静态IP.设置DNS和 ...

  7. 查看自己电脑外网IP

    连着wifi,在CMD窗口中显示的无线局域网适配器IP很有可能是内网IP.此时可以通过下面方法查看自己的电脑外网IP. 1.前提条件可以上外网: 2.上外网百度,输入IP,进行搜索. 3.查看结果即可 ...

  8. 【不积跬步,无以致千里】linux下如何查看自己的外网IP

    局域网的服务器是通过ADSL路由器连接外网的,但ADSL是从ISP运营商那儿通过动态获得IP的,那么我怎么知道自己的外网地址是多少呢?今天得到几个办法:curl -s http://whatismyi ...

  9. 查看linux系统外网ip命令

    终端中输入 curl ipinfo.io 或者 curl ifconfig.me 即可通过IP地址检测网站提供的api获得取本机的外网IP,或者以 JSON 格式返回全部结果.

随机推荐

  1. STM32F4 DMA2D_M2M_PFC

    此例程为STM324x9I_EVAL:DCMI_CaptureMode,使用的stm32f4xx_hal_driver, At each camera line event, the line is ...

  2. 深入学习 Block

    本文翻译自苹果的文档,有删减,也有添加自己的理解部分. 如果有Block语法不懂的,可以参考fuckingblocksyntax,里面对于Block 为了方便对比,下面的代码我假设是写在ViewCon ...

  3. winform 窗体设置成无边框、可拖拽、四周圆角

    最近做一个及时通讯系统的登录界面,现在将界面用到的无边框.可拖拽.四周圆角的方法分享如下: 1.无边框的窗体: 把FormBorderStyle的属性设置为none 2.可拖拽:private Poi ...

  4. hdu4975 A simple Gaussian elimination problem.(最大流+判环)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4975 题意:和hdu4888基本一样( http://www.cnblogs.com/a-clown/ ...

  5. strcpy(转载)

    转自:http://www.kuqin.com/clib/string/strcpy.html 原型:extern char *strcpy(char *dest,char *src); 用法:#in ...

  6. maven配置文件注意事项

    1:安装完成后在C:\Users\Administrator\.m2有一个文件settings.xml需要修改一下配置 2:设置maven从网上下载的jar包.(时间长会很大).我设置它保存我的电脑位 ...

  7. Codeforces785D - Anton and School - 2

    传送门 题意 给出一个只包含'(',')'的字符序列,询问有多少个\(RSBS\) 分析 首先需要知道一个公式 \[\sum_{i=0}^{min(x,y)}C_x^i*C_y^i=C_{x+y}^x ...

  8. bzoj 3527: [Zjoi2014]力【FFT】

    大力推公式,目标是转成卷积形式:\( C_i=\sum_{j=1}^{i}a_jb_{i-j} \) 首先下标从0开始存,n-- \[ F_i=\frac{\sum_{j<i}\frac{q_j ...

  9. zoj 2587 Unique Attack【最小割】

    拆点拆魔怔了 直接按照原图建就行,这里有个小技巧就是双向边的话不用按着板子建(u,v,c)(v,u,0)(v,u,c)(u,v,0),直接建(u,v,c)(v,u,c)会快十倍!800ms->8 ...

  10. 关于自增id 你可能还不知道

    导读:在使用MySQL建表时,我们通常会创建一个自增字段(AUTO_INCREMENT),并以此字段作为主键.本篇文章将以问答的形式讲述关于自增id的一切. 注: 本文所讲的都是基于Innodb存储引 ...