获取本机IP信息
来源:互联网 发布:php视频教程全集 编辑:程序博客网 时间:2024/05/19 08:41
不能直接获取本机IP信息确实挺纠结的,感觉微软应该给出这样的API接口
C++中的实现:
一般实现都需要先通过gethostname()函数获取本机的名字,然后再调用gethostbyname()函数来获取主机的信息。
gethostname()函数的说明如下:
int gethostname(char FAR *name, int namelen);
其中,name是主机的名字,是输出参数;
gethostbyname函数的说明如下:
struct hostent FAR *gethostbyname(const char FAR *name);
返回结构体具体内容为:
struct hostent { char FAR * h_name; char FAR * FAR * h_aliases; short h_addrtype; short h_length; char FAR * FAR * h_addr_list;};
其中,h_addr_list中以数组形式存放主机的IP信息(以网络字节序保存)。一般而言,数组中第一个(即下标为0)为外网IP,第二个为内网IP。
然后再调用inet_ntoa()函数转化为点分十进制形式。
char FAR * inet_ntoa(struct in_addr in);
代码实现如下:
//获取本机的IP信息,pIP为传出参数char * CClient::getHostIP(){char hostName[32]={0};if(gethostname(hostName, 32)==SOCKET_ERROR)return NULL;hostent * pHost=gethostbyname(hostName);if(pHost==NULL)return NULL;return inet_ntoa(*(in_addr *)pHost->h_addr_list[0]);}
注意:gethostname()函数和gethostbyname()函数都包含在Winsock2.h头文件中,同时增加项目连接:Ws2_32.lib
C++中的实现:
需要用到的类:
Dns类:提供简单的域名解析功能;
主要用到的两个方法:
(1)GetHostName()方法 用来获取主机名
public static string GetHostName()
(2)GetHostEntry()方法 将主机名或 IP 地址解析为 IPHostEntry 实例
public static IPHostEntry GetHostEntry(string hostNameOrAddress)
IPHostEntry类:为 Internet 主机地址信息提供容器类;
主要用到属性AddressList,该属性可以用于获取或设置与主机关联的 IP 地址列表
public IPAddress[] AddressList { get; set; }
IPAddress类可以使用方法ToString()转为字符串,也可以使用方法Parse()将字符串转为IPAddress类型。
所在的命名空间:using System.Net;
实现步骤与C++中相似,都是先获取主机名,然后再通过主机名来获取主机IP
代码实现如下:
static void Main(string[] args) { //得到主机名 string HostName = Dns.GetHostName(); //获得与主机关联的 IP 地址列表 IPHostEntry IpEntry = Dns.GetHostEntry(HostName); Console.WriteLine("Host Name is {0}", HostName); for (int i = 0; i < IpEntry.AddressList.Length; i++) { string strIPAddr = IpEntry.AddressList[i].ToString(); Console.WriteLine("Host IP is {0}", strIPAddr); } Console.ReadLine(); }
- 获取本机IP信息
- 获取本机IP等信息
- C++获取本机IP地址信息
- 获取本机IP城市信息
- 【系统信息获取】10,获取本机IP地址
- wxWidgets获取本机IP,计算机名等相关信息
- wxWidgets获取本机IP,计算机名等相关信息
- Perl获取连接本机的外部IP信息。
- java 通过NetworkInterface获取本机ip地址信息
- VC++获取本机所有IP和掩码信息
- VC++获取本机所有IP和掩码信息
- 获取本机IP
- 获取本机IP
- 获取本机IP
- 获取本机IP
- 获取本机ip
- 获取本机IP
- 获取本机ip
- 详细介绍SQL交叉表的实例
- Object-C 协议 Protocol
- 工作日志2011-10-25
- 《机器人学基础》整理(3)
- VC显示网页验证码、模拟CSDN网页登录
- 获取本机IP信息
- 汇编语言学习笔记10
- 无题
- android TabHost setcontent出错
- 从windows移植到linux下需要注意的
- 解决Eclipse进行Android开发时logcat不显示问题-使用DDMS
- Python pychart画图几种常见的形式
- PDU短信的编码一般规则
- I/O流基础试题