怎样获取本机的ip地址
首先介绍一下用到的结构体
struct hostent {
const char *h_name; // official name of host
char **h_aliases; // alias list
short h_addrtype; // host address type
short h_length; // length of address
char **h_addr_list; // list of addresses from name server
#define h_addr h_addr_list[0] // address, for backward compatiblity
};
struct in_addr {
in_addr_t s_addr;
};
这里是这个数据结构的详细资料:
struct hostent:
h_name – 地址的正式名称。
h_aliases – 空字节-地址的预备名称的指针。
h_addrtype – 地址类型; 通常是AF_INET。
h_length – 地址的比特长度。
h_addr_list – 零字节-主机网络地址指针,网络字节顺序。
h_addr - h_addr_list中的第一地址。
gethostbyname() 成功时返回一个指向结构体 hostent 的指针,或者 是个空 (NULL) 指针, 完整代码如下:
#include <stdio.h>
#include <unistd.h>
#include <netdb.h>
#include <stdlib.h>
#include <string.h>
#include <arpa/inet.h>
int main()
{
char name[65];
struct hostent* pHost;
struct hostent hs;
int i, j;
int cnt = 0;
char *ips[8];
gethostname(name, sizeof(name));
printf("hostname = %s\n", name);
/* 获取本机地址 */
pHost = &hs;
pHost = gethostbyname(name);
printf("%s\n",pHost->h_name);
printf("%d\n",pHost->h_addr);
struct in_addr *in= (struct in_addr *)pHost->h_addr;
printf("%s\n", inet_ntoa(*in));
for (i = 0; pHost != 0 && pHost->h_addr_list[i] != 0; i++) {
char ip[16]; ip[0] = 0;
for (j = 0; j < pHost->h_length; j++) {
char tmp[16];
if(j > 0) {
strcat(ip, ".");
}
sprintf( tmp, "%u",
(unsigned int)((unsigned char*)pHost->h_addr_list[i])[j]);
strcat(ip, tmp);
}
ips[cnt] = (char*)malloc(64);
strcpy(ips[cnt++], ip);
}
return 0;
}
怎样获取本机的ip地址的更多相关文章
- 【Win 10 应用开发】获取本机的IP地址
按照老规矩,也是朋友的建议,老周今天在吹牛之前,先讲一个小故事. 有朋友问我,老周,你现在还发短信吗,你每个月用多少电话费?唉,实话说,现在真的发短信不多了,套餐送的130条短信,每月都发不了一条.至 ...
- 获取本机的IP地址(局域网)与主机名称
编写内容保存为bat @echo off &setlocal enabledelayedexpansion Rem '/*========获取本机的IP地址(局域网)=========*/ e ...
- 获取本机的IP地址和mac地址
1. 以前一直用ipconfig来查看ip地址,哈哈哈,现在发现挺好玩 #获取本机的IP地址和mac地址 import uuid import socket def get_mac_address() ...
- Java 工具类 IpUtil - 获取本机所有 IP 地址,LocalHost 对应地址 IP
Java 工具类 IpUtil - 获取本机所有 IP 地址,LocalHost 对应地址 IP IP 工具类 源代码: /** * <p> * * @author XiaoPengwei ...
- 获取本机的ip地址(排除虚拟机,蓝牙等ip)
项目中遇到了要获取本地ip的需求,网上查找资料遇到很多坑,很多Java获取本机ip地址的方法要么是根本获取不到,要么是获取的有问题. 网上常见的方法如下 InetAddress.getLocalHos ...
- C++获取本机的ip地址程序
#include <WinSock2.h> #pragma comment(lib,"ws2_32") //链接到ws2_32动态链接库 class CInitSock ...
- android获取本机的IP地址和mac物理地址
/获取本机IP地址 public String getLocalIpAddress() { WifiManager wifiManager = (WifiManager) getSystemServi ...
- C#获取本机IP方法,获取本机局域网IP地址方法
1. private void GetIP() { string hostName = Dns.GetHostName();//本机名 //System.Net.IPAddress[] address ...
- 获取本机的IP地址
/// <summary> /// 获取本机IP地址 /// </summary> /// <returns>本机IP地址</returns> publ ...
随机推荐
- CA签发工具
#!/bin/bash #author Sun Ying #date:2015-12-17 if [ $# -lt 1 ];then echo -e "\033[34mUsage: `bas ...
- C# 基础排序与查找算法
排序算法: class Sort { static void swap<T>(ref T a, ref T b) { T tmp = a; a = b; b = tmp; } #regio ...
- 常用MySQL命令整理
备份数据库 #.备份数据库到sql文件 mysqldump --add-drop-database -h localhost -uusername ppassword dbname > dbna ...
- 比较常用的几个maven第三方镜像
OSC的:<mirror> <id>CN</id> <name>OSChina Central</name> ...
- 【转载-pdcxs007】 Windows7配置CTex+Texmaker
!! 安装CTex会覆盖系统原来的环境变量里面的系统路径!! 坑人! Windows7配置CTex+Texmaker CTex和Texmaker的下载方法就不必细谈了,在官方网站上有.主要是CTex建 ...
- HDOJ(1238) KMP
Substrings http://acm.hdu.edu.cn/showproblem.php?pid=1238 先找到长度最短的字符串,把它的子串和该子串的逆序(按长度从大到小)依次与其他字符串匹 ...
- MyEclipse配置Tomcat 6
打开首选项 禁用MyEclipse自带的Tomcat 6 下载apache-tomcat-6.0.29.tar.gz 地址:http://yunpan.cn/cKg6kq2RmjdUB 提取码 98 ...
- netty发送utf-8编码的信息
/** * */ @Override public void channelActive(ChannelHandlerContext ctx) throws Exception { // (1) // ...
- mysql - 缺失范围和连续范围
初始化数据 # 创建表 DROP TABLE IF EXISTS g; CREATE TABLE g( a INT )ENGINE=INNODB; # 初始化数据 ; ; ; ; ; ; ; ; ; ...
- vim 标记 mark 详解 (转载)
http://www.cnblogs.com/jianyungsun/archive/2011/02/14/1954057.html Vim 允许你在文本中放置自定义的标记.命令 "ma&q ...