/*******************************************************************************
作者 :邓中强
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. html页面缓存问题

    若IIS没有设置,html页面一旦缓存,则永远缓存. Chrome如下 火狐如下 一种方法:我们一般通过xxx.html?20151010这样URL欺骗浏览器. 另一种方法:设置IIS,让永远客户端不 ...

  2. YTU 2402: Common Subsequence

    2402: Common Subsequence 时间限制: 1 Sec  内存限制: 32 MB 提交: 63  解决: 33 题目描述 A subsequence of a given seque ...

  3. 自定义View分类与流程

    自定义View分类与流程(进阶篇)## 转载出处: http://www.gcssloop.com/customview/CustomViewProcess/ 自定义View绘制流程函数调用链(简化版 ...

  4. 并不对劲的bzoj4198:loj2132:uoj130:p2168:[NOI2015]荷马史诗

    题目大意 有\(n\)(\(n\leq10^5\))种单词,其中第\(i\)种单词在文章中的出现次数为\(w_i\) 要将每个单词替换成一个字符集为\(k\)(\(k\leq9\))的字符串,使对于任 ...

  5. Linux网络协议栈(二)——套接字缓存(socket buffer)

    Linux网络核心数据结构是套接字缓存(socket buffer),简称skb.它代表一个要发送或处理的报文,并贯穿于整个协议栈.1.    套接字缓存skb由两部分组成:(1)    报文数据:它 ...

  6. Gerrit2安装配置

    我主要根据下面这个文章而安装,遇到一些小问题,记录如下:2016.4.30 安装 2.12.2,要将加密的东东全装上!!!注意                      1) 由于新的git-bash ...

  7. choice() 函数

    描述 choice() 方法返回一个列表,元组或字符串的随机项. 语法 以下是 choice() 方法的语法: import random random.choice( seq ) 注意:choice ...

  8. MYSQL自动备份策略的选择(转载)

    原文地址: http://shinepaopao.iteye.com/blog/1938568

  9. rm -rf 的“幸存者”

    原文:http://blog.jobbole.com/70971/ 以 root 用户执行 rm –rf / 命令,然后观察下哪些文件或者指令会幸存下来.结果是什么也没少!因此你必须增加 —no-pr ...

  10. bzoj 4236: JOIOJI【前缀和+map】

    设sj,so,si分别是J O I的个数前缀和,然后要求求最长(l,r)满足sj[r]-sj[l-1]==so[r]-so[l-1]==si[r]-si[l-1],化简一下就是满足so[r]-so[l ...