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 格式返回全部结果.
随机推荐
- Ubuntu系统下实现Android工程调用独立编译的C++程序和GMP、PBC库
目的: 实现使用C++编写代码供Android工程调用.C++代码中可以使用STL库,也可以使用常用的由源码编译生成的库,如PBC.因为PBC是基于GMP库的,所以这里只记录了GMP和PBC库的编译安 ...
- hihocoder 第二十五周 spfa 最短路
其实hihocoder里的题目目前大都是模板题啊-.- 这周的是SPFA,暑假的时候有看过SPFA,不过一直用的都是Dijkstra,感觉spfa要更加简洁一点~~,今天找了一份之前一直都看不太懂所以 ...
- linux系统无法上外网,路由器可以上网,可以ping通路由器,ping不通外网IP
临时生效方法(添加路由网关),执行: #route add default gw 192.168.92.1 #根据实际网关IP填写 如果不行,使用下面方法: 一:使用 route 命令添加使用ro ...
- 五:多线程--NSOperation基本操作
一.并发数 (1)并发数:同时执⾏行的任务数.比如,同时开3个线程执行3个任务,并发数就是3 (2)最大并发数:同一时间最多只能执行的任务的个数. (3)最⼤大并发数的相关⽅方法 - (NSInt ...
- 并不对劲的bzoj3998:loj2102:p3975:[TJOI2015]弦论
题目大意 对于一个给定的长度为n(\(n\leq5*10^5\))的字符串, 分别求出不同位置的相同子串算作一个.不同位置的相同子串算作多个时,它的第k(\(k\leq10^9\))小子串是什么 题解 ...
- hashlib练习
练习一 练习二 练习三 答案 #!/usr/bin/python# #-*-coding:UTF-8-*- import hashlib ''' 字典存用户名和密码 ''' db = { 'micha ...
- 三分钟掌握docker基本指令
一下内容是我用markdown编辑的,所以排版不是太ok~ # Docker ## 1.核心概念 docker主机(Host):安装了docker程序的机器.docker直接安装再操作系统上. doc ...
- nmcli 学习小结
nmcli 是Redhat提供的网络配置编辑工具, 它可直接编辑/etc/sysconfig/network-scripts/ifcfg-xxx , 它是NetworkManager服务的客户端工具, ...
- bind:Address alreasy is use
在bind邦定时,通常会出现bind:Address alreasy is use错误. 此错误可以用setsockopt函数避免 int setsockopt(int sockfd,int leve ...
- Golang 在 Linux CentOS 6.5 服务器上实现 博客后台程序开机启动
在linux下想实现开机启动的方法很多,这里我采用了在/etc/rc.local里写shell指令的方式. 以下就以我的实际操作为例子讲述,很多地方需要看官自己调整信息哦! 1.在/etc/rc.lo ...