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;
}

c语言 c++ 实现查看本地ip,外网ip, 本地主机名,查看http网址对应的ip的更多相关文章
- JS获取客户端IP地址、MAC和主机名【转】
JS获取客户端IP地址.MAC和主机名 引用:JS获取客户端IP地址.MAC和主机名的7个方法汇总 利用搜狐接口 <html> <head> <meta http-equ ...
- 外网访问本地服务器下的web应用
让本地服务器可以在外网访问的方式有很多,介绍其中一种: 由于本人是在自己电脑上装了一个虚拟机, 测试环境为:虚拟机作为服务器,服务器中装了一个禅道,虚拟机IP192.168.2.221,本人通过tpl ...
- 手机APP应用外网访问本地WEB应用
手机APP应用外网访问本地WEB应用 本地安装了WEB服务端,手机APP应用只能在局域网内访问本地WEB,怎样使手机APP应用从公网也能访问本地WEB? 本文将介绍具体的实现步骤. 1. 准备工作 1 ...
- holer实现外网访问本地网站
外网访问本地网站 本地搭建了网站,只能在局域网内访问,怎样从公网也能访问内网网站? 本文将介绍使用holer实现的具体步骤. 1. 准备工作 1.1 安装并启动网站服务端 默认搭建的网站服务端端口是8 ...
- [原创]K8Cscan插件之Cisco思科设备扫描(IP、设备型号、主机名、Boot、硬件版本)
[原创]K8 Cscan 大型内网渗透自定义扫描器 https://www.cnblogs.com/k8gege/p/10519321.html Cscan简介:何为自定义扫描器?其实也是插件化,但C ...
- 详述Linux配置静态IP、设置DNS和主机名(一)
Linux配置静态IP.设置DNS和主机名首先要找到配置文件,这是在Linux系统下进行工作的必须知道工作方式.后面一步步的跟着这个范例来进行配置相信你最终也会完成Linux配置静态IP.设置DNS和 ...
- 查看自己电脑外网IP
连着wifi,在CMD窗口中显示的无线局域网适配器IP很有可能是内网IP.此时可以通过下面方法查看自己的电脑外网IP. 1.前提条件可以上外网: 2.上外网百度,输入IP,进行搜索. 3.查看结果即可 ...
- 【不积跬步,无以致千里】linux下如何查看自己的外网IP
局域网的服务器是通过ADSL路由器连接外网的,但ADSL是从ISP运营商那儿通过动态获得IP的,那么我怎么知道自己的外网地址是多少呢?今天得到几个办法:curl -s http://whatismyi ...
- 查看linux系统外网ip命令
终端中输入 curl ipinfo.io 或者 curl ifconfig.me 即可通过IP地址检测网站提供的api获得取本机的外网IP,或者以 JSON 格式返回全部结果.
随机推荐
- SERVLET类常用接口及方法
SERVLET类常用接口及方法 2011-09-09 16:14:43 [size=xx-small]SERVLET类常用接口及方法2007年04月05日 星期四 04:46 P.M.基本类和接 ...
- POJ - 3308 Paratroopers(最大流)
1.这道题学了个单词,product 还有 乘积 的意思.. 题意就是在一个 m*n的矩阵中,放入L个敌军的伞兵,而我军要在伞兵落地的瞬间将其消灭.现在我军用一种激光枪组建一个防御系统,这种枪可以安装 ...
- linux系统无法上外网,路由器可以上网,可以ping通路由器,ping不通外网IP
临时生效方法(添加路由网关),执行: #route add default gw 192.168.92.1 #根据实际网关IP填写 如果不行,使用下面方法: 一:使用 route 命令添加使用ro ...
- SELinux 初探
SELinux:Security Enhanced Linux.SELinux 是 NSA(美国国家安全局)开发设计,整合到 Linux 内核中的一个模块. 0. 基本概念 DAC(Discretio ...
- ab压力测试-突破最大线程数
ab压力测试中,发现你一次最多只能启动1024个线程 默认情况下,一个线程的栈要预留1M的内存空间 而一个进程中可用的内存空间只有2G,所以理论上一个进程中最多可以开2048个线程 但是内存当然不可能 ...
- 前端之html第一天
一.内容
- bzoj 4596
4596: [Shoi2016]黑暗前的幻想乡 Time Limit: 20 Sec Memory Limit: 256 MBSubmit: 257 Solved: 152[Submit][Sta ...
- Mysql数据库的数据类型、索引、锁、事务和视图
Mysql数据库的数据类型.索引.锁.事务和视图 数据的类型 1)数据类型: 数据长什么样? 数据需要多少空间来存放? 系统内置数据类型和用户定义数据类型 2)MySql 支持多种列类型: 数值类型 ...
- jrebel永久免费使用教程,这个标题怎么样?不能带“激活”俩字?
文章转载自:https://www.jiweichengzhu.com/article/33c0330308f5429faf7a1e74127c9708 如果还有问题,加群交流:686430774(就 ...
- ROS学习笔记二:ROS系统架构及概念
本文主要是了解ROS的系统架构.文件夹结构以及工作所需的核心文件. ROS系统架构主要被设计和划分为三部分,每一部分代表一个层级的概念:文件系统级(The filesystem level).计算图级 ...