取得当前ip信息

#include<winsock2.h>
#include<stdio.h>
#pragma comment(lib,"WS2_32.lib")
int main()
{
 WSADATA data;
 WSAStartup(2,&data);
 hostent* host = gethostbyname("");

 char *IP = inet_ntoa(*(struct in_addr*)*(host->h_addr_list));

 printf("Local IP:%s\n",IP);

 WSACleanup();
 return 0; 

}

#include <WinSock2.h>
#include <Iphlpapi.h>
#include <iostream>
using namespace std;
#pragma comment(lib,"Iphlpapi.lib") //需要添加Iphlpapi.lib库

int main(int argc, char* argv[])
{
//PIP_ADAPTER_INFO结构体指针存储本机网卡信息
PIP_ADAPTER_INFO pIpAdapterInfo = new IP_ADAPTER_INFO();
//得到结构体大小,用于GetAdaptersInfo参数
unsigned long stSize = sizeof(IP_ADAPTER_INFO);
//调用GetAdaptersInfo函数,填充pIpAdapterInfo指针变量;其中stSize参数既是一个输入量也是一个输出量
int nRel = GetAdaptersInfo(pIpAdapterInfo,&stSize);
//记录网卡数量
int netCardNum = 0;
//记录每张网卡上的IP地址数量
int IPnumPerNetCard = 0;
if (ERROR_BUFFER_OVERFLOW == nRel)
{
//如果函数返回的是ERROR_BUFFER_OVERFLOW
//则说明GetAdaptersInfo参数传递的内存空间不够,同时其传出stSize,表示需要的空间大小
//这也是说明为什么stSize既是一个输入量也是一个输出量
//释放原来的内存空间
delete pIpAdapterInfo;
//重新申请内存空间用来存储所有网卡信息
pIpAdapterInfo = (PIP_ADAPTER_INFO)new BYTE[stSize];
//再次调用GetAdaptersInfo函数,填充pIpAdapterInfo指针变量
nRel=GetAdaptersInfo(pIpAdapterInfo,&stSize);
}
if (ERROR_SUCCESS == nRel)
{
//输出网卡信息
//可能有多网卡,因此通过循环去判断
while (pIpAdapterInfo)
{
cout<<"网卡数量:"<<++netCardNum<<endl;
cout<<"网卡名称:"<<pIpAdapterInfo->AdapterName<<endl;
cout<<"网卡描述:"<<pIpAdapterInfo->Description<<endl;
switch(pIpAdapterInfo->Type)
{
case MIB_IF_TYPE_OTHER:
cout<<"网卡类型:"<<"OTHER"<<endl;
break;
case MIB_IF_TYPE_ETHERNET:
cout<<"网卡类型:"<<"ETHERNET"<<endl;
break;
case MIB_IF_TYPE_TOKENRING:
cout<<"网卡类型:"<<"TOKENRING"<<endl;
break;
case MIB_IF_TYPE_FDDI:
cout<<"网卡类型:"<<"FDDI"<<endl;
break;
case MIB_IF_TYPE_PPP:
printf("PP\n");
cout<<"网卡类型:"<<"PPP"<<endl;
break;
case MIB_IF_TYPE_LOOPBACK:
cout<<"网卡类型:"<<"LOOPBACK"<<endl;
break;
case MIB_IF_TYPE_SLIP:
cout<<"网卡类型:"<<"SLIP"<<endl;
break;
default:

break;
}
cout<<"网卡MAC地址:";
for (DWORD i = 0; i < pIpAdapterInfo->AddressLength; i++)
if (i < pIpAdapterInfo->AddressLength-1)
{
printf("%02X-", pIpAdapterInfo->Address[i]);
}
else
{
printf("%02X\n", pIpAdapterInfo->Address[i]);
}
cout<<"网卡IP地址如下:"<<endl;
//可能网卡有多IP,因此通过循环去判断
IP_ADDR_STRING *pIpAddrString =&(pIpAdapterInfo->IpAddressList);
do
{
cout<<"该网卡上的IP数量:"<<++IPnumPerNetCard<<endl;
cout<<"IP 地址:"<<pIpAddrString->IpAddress.String<<endl;
cout<<"子网地址:"<<pIpAddrString->IpMask.String<<endl;
cout<<"网关地址:"<<pIpAdapterInfo->GatewayList.IpAddress.String<<endl;
pIpAddrString=pIpAddrString->Next;
} while (pIpAddrString);
pIpAdapterInfo = pIpAdapterInfo->Next;
cout<<"--------------------------------------------------------------------"<<endl;
}

}
//释放内存空间
if (pIpAdapterInfo)
{
delete [] pIpAdapterInfo;
}

std::cout<<"Over"<<std::endl;
getchar();
return 0;
}

取得当前ip信息

时间: 2024-11-23 11:16:46

取得当前ip信息的相关文章

linux下的shell命令的编写,以及java如何调用linux的shell命令(java如何获取linux上的网卡的ip信息)

程序员都很懒,你懂的! 最近在开发中,需要用到服务器的ip和mac信息.但是服务器是架设在linux系统上的,对于多网口,在获取ip时就产生了很大的问题.下面是在windows系统上,java获取本地ip的方法.贴代码: package com.herman.test; import java.net.InetAddress; /** * @see 获取计算机ip * @author Herman.Xiong * @date 2014年5月16日 09:35:38 */ public class

PHP获取IP信息

<?php /** * 获取客户端IP * @param integer $type 返回类型 0:string,1:long * @return string|long */ function getClientIp($type = 0) { $ip = NULL; if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) { $arr = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']); $pos = array_

解决虚拟机 正在决定eht0 的ip信息失败 无链接-- 虚拟机上linux redhat 上网问题

对于虚拟机上,linux redhat上网的配置方式有三种 一.用setup命令进行配置(具体技巧可查setup命令的使用) 二.直接用 ifconfig eth0  ip地址进行配置 三.进入系统文件下进行配置 如使用如下命令(个人的):vim /etc/sysconfig/network-scripts/ifcfg-eth0 注意: BOOTPROTO=dhcp 表示的是ip是动态分配的(在局域网内非常有用) BOOTPROTO=static表示配置的ip是固定的,同时下面要配置对应的ip,

Python:收集IP信息

下面通过两种方法实现收集IP信息 1.通过 ifconfig 命令输出IP信息,并以"\n\n"切片分成不同的网卡块 2.通过 ifconfig 命令输出IP信息,并以第一个字符在顶格的方式切片分成不同的网卡块 # vim ip1.py #!/usr/bin/env python from subprocess import Popen, PIPE def getIfconfig(): p = Popen(['ifconfig'], stdout=PIPE) data = p.stdo

改动网卡IP信息

改动网卡IP信息的情况有非常多种,只是从大体上能够分为两种,一种是暂时改动,重新启动网络服务后改动便会失效:一种是永久改动,重新启动网络服务后才会生效.一般暂时改动应用在暂时的动作中,我们通过分类名字也能够知道,是为了应对下面暂时问题.而永久改动时为了构建一个稳定的网络环境,也就是所谓的生产环境. 如今我们分类介绍两种改动的简单操作. 一.暂时改动 更改前: [[email protected] network-scripts]# ifconfig br0 br0       Link enca

linux服务器查看公网IP信息的方法

参考: http://www.cnblogs.com/ksguai/p/6090115.html 最近在解决网络问题时,需要查看本机的出口公网IP信息,所以在网络上搜索和请求运维达人,获得如下两个方法: curl ifconfig.me 在linux系统中输入上述的命令,可以查看到本机连接的公网信息:如果该命令无效,可以使用下面一个命令,也同样可以获得对应的信息 curl cip.cc

Linux连接xshell找不到IP信息

虚拟机环境下的Linux连接xshell的网络连接找不到IP的解决方法 1  输入ifconfig,如果有IP信息,直接填写该IP信息 2输入ifconfig 后没有eth0信息的,找不到 IP的,可以试试输入 ifup eth0 (就是打开网卡 ),然后再输入ifconfig.应该就可以找到IP信息. 3 如果还是不行的话,可以先用 dhclient eth0获取IP 地址, 然后运行 ifconfig eth0  看获取的IP 是不是跟之前一样.不一样的的话试试这个

python 收集ip信息

熟悉python 对字符文本的分割和获取信息的方法. 文章结构: (1) 对ifconfig 命令输出的信息,进行分析 (2) 用两种方法对输出实现分析,获取系统的ip信息,包括:网卡名,ip地址和MAC地址 1. ifconfig 命令输出信息分析 先上图: 如上图,我们需要统计的三个信息是网卡名,eth0,eth0:1,eth1 这三块网卡,至于'lo' 网卡就不用统计了.每张网卡,还需要记录MAC 地址和ip 地址. 看到上面的信息,它是以每张网卡的信息作为一段的,而且都是以网卡顶行开始,

python学习之最简单的获取本机ip信息的小程序

文章是从我的个人博客粘贴过来的,大家可以直接访问我的个人博客哦 http://www.iwangzheng.com 获取本机ip信息的命令ifconfig总是在用,这次拿到pyhton代码里,感觉python好麻烦啊,每次都要import. 可以在程序里直接read出来,也可以先在命令行执行ifconfig > xx.txt,这样可以直接访问倒入后的文本信息. 这个小程序有个问题,与朋友讨论了还没解决彻底,如果用findall是可以匹配所有的,但是怎么解决用match只匹配一次的问题呢,当然如果

修改网卡IP信息

修改网卡IP信息的情况有很多种,不过从大体上可以分为两种,一种是临时修改,重启网络服务后修改便会失效:一种是永久修改,重启网络服务后才会生效.一般临时修改应用在临时的动作中,我们通过分类名字也可以知道,是为了应对以下临时问题.而永久修改时为了构建一个稳定的网络环境,也就是所谓的生产环境. 现在我们分类介绍两种修改的简单操作. 一.临时修改 更改前: [[email protected] network-scripts]# ifconfig br0 br0       Link encap:Eth