C++实现获取本机机器名及外网IP代码

#include "stdafx.h"
#include <WINSOCK2.H>
#include <urlmon.h>

#pragma comment(lib, "ws2_32.lib")
#pragma comment(lib, "urlmon.lib")

#define MAX_SIZE 1024

int GetLocalIP();
int GetInternetIP();

int main(int argc, char* argv[])
{
GetLocalIP();
GetInternetIP();
return 0;
}

int GetLocalIP()
{
WSADATA wsaData;
int err = WSAStartup(MAKEWORD(2, 0), &wsaData);
if (err != 0)
{
return err;
}

char szHostName[MAX_PATH] = {0};
int nRetCode;
nRetCode = gethostname(szHostName, sizeof(szHostName));

char* lpLocalIP;
PHOSTENT hostinfo;

if (nRetCode != 0)
{
return WSAGetLastError();
}

hostinfo = gethostbyname(szHostName);
lpLocalIP = inet_ntoa(*(struct in_addr*)*hostinfo->h_addr_list);

if (szHostName != NULL)
{
printf("主机名: %s\n", szHostName);
printf("本地IP: %s\n", lpLocalIP);
}

WSACleanup();
return 0;
}

int GetInternetIP()
{
char buf[MAX_PATH] = {0}; //把网页中读出的数据放在此处
char chTempIp[128] = {0};
char chIP[64] = {0}; //最终存放IP在此

//将网页数据写入c:\i.ini文件中
URLDownloadToFile(0, "http://iframe.ip138.com/ic.asp", "c:\\i.ini", 0, NULL);

FILE *fp = fopen("c:\\i.ini", "r");
if (fp != NULL)
{
//
fseek(fp, 0, SEEK_SET);
fread(buf, 1, MAX_PATH, fp);
fclose(fp);

//在buf中查找 [ 的位置, iIndex是buf中从[开始剩下的字符串,包括[这个字符串
char* iIndex = strstr(buf, "[");
if (iIndex)
{
sprintf(chTempIp, "%s", iIndex);
int nBuflen = strlen(chTempIp);

for (int i = 0; i < nBuflen; i++)
{
chIP[i] = chTempIp[i+1];

//如果发现有 ] 则截断
if (chTempIp[i] == ‘]‘)
{
chIP[i-1] = ‘\0‘;
//printf("外网IP: %s\n", chIP);
}
}
}

}

printf("外网IP: %s\n", chIP);
remove("c:\\i.ini");

return 0;

}

.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, "Courier New", courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }

C++实现获取本机机器名及外网IP代码

时间: 2024-10-22 21:52:16

C++实现获取本机机器名及外网IP代码的相关文章

如何获取本机内网和外网IP(windows+linux)

1:场景描述 在做Netty相关项目的时候,我们往往需要绑定本机的IP和端口号,如果我们把它写在配置文件中,那么我们每次换电脑运行或者部署到其他环境时候都需要修改配置文件.这样就会比较麻烦,如果我们把它做成智能的获取本机的IP,这样我们的代码的可移植性就提高了.下面就介绍一种在windows和linux下面可以智能获取我们本机的局域网IP和外网IP的方法,不妥之处还请大家多多指教. 2:解决方法以及代码 首先贴上获取IP的工具类 /** * Copyright (C) 2015 Raxtone

linux下获取外网IP

使用阿里云或者有多个网卡IP的机器需要取外网IP时,可以用下面这种 wget -qO - ifconfig.co 更多方法参考:https://yq.aliyun.com/ziliao/105999

C#获取外网IP、本机MAC地址及Ping的实现

原文 获取外网IP, C#获取本机的MAC地址,C#通过编程方式实现Ping 获取外网IP地址 思路是通过WebRequest连接一些网上提供IP查询服务的网站,下载到含有你的IP的网页,然后用正则表达式提取出IP来 class Program { static void Main(string[] args) { Console.WriteLine(GetExportIP()); Console.ReadKey(); } public static string GetExportIP() {

C#获取本机内网外网IP

using System.Net; # region 获取内.外网Ip /// <summary> /// 获取本地ip地址,优先取内网ip /// </summary> public static String GetLocalIp() { String[] Ips = GetLocalIpAddress(); foreach (String ip in Ips) if (ip.StartsWith("10.80.")) return ip; foreach

c#中如何获取本机用户名、MAC地址、IP地址、硬盘ID、CPU序列号、系统名称、物理内存

我们在利用C#开发桌面程序(Winform)程序的时候, 经常需要获取一些跟系统相关的信息, 以下这些代码获取能有些用处. c#中如何获取本机用户名.MAC地址.IP地址.硬盘ID.CPU序列号.系统名称.物理内存. 首先需要引入命名空间: using System.Management; /// 操作系统的登录用户名: string GetUserName() { try { string st = ""; ManagementClass mc = new ManagementCla

C#获取本机的外网IP

/// <summary> /// 功能:获取本地的外网IP地址 /// 作者:黄海 /// 时间:2016-07-22 /// </summary> /// <returns></returns> private static string GetPublicIp() { var urlList = new List<string> { "http://ip.qq.com/", "http://pv.sohu.co

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

/******************************************************************************* 作者 :邓中强 Email :[email protected] QQ :1246747572 博客 :http://www.cnblogs.com/dzqdzq/ 时间 :2014/01/01 功能 ********************************************************************

linux获取外网ip

引言:目前获取ip的方法中,ifconfig和ip获取函数得到的都是内网ip.有时候需要获取外网ip,目前通用的做法,是向外部服务器发送请求,解析外部服务器响应,从而得到的自己的外网ip.linux下的 curl可以替我们完成这些工作,当然,不怕麻烦的话,可以自己分析http协议,自己实现以上过程.如果熟悉python的话,那就更简单了,就像我们所知道的,python总是有现成的库函数可供我们调用.一下总结几种获取外网ip的方法,以供查询,资料来源互联网. 参看资料: http://www.cn

java 获取公网(外网IP)很实用!

package com.lovo.util; import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; public class PublicInterIp { /** * @param args * @throws Exception */ public S