- 浏览: 2527608 次
- 性别:
- 来自: 苏州
文章分类
最新评论
-
jsntghf:
peio 写道这个怎么运行?Ruby On Rails的环境搭 ...
多文件上传之uploadify -
peio:
这个怎么运行?
多文件上传之uploadify -
往事如烟1:
我的项目是自己init了一个原始的project,之后将ver ...
React Native热部署之CodePush -
jsntghf:
往事如烟1 写道我按照你的说明进行,发现app退出之后,在进入 ...
React Native热部署之CodePush -
往事如烟1:
我按照你的说明进行,发现app退出之后,在进入不正确,请问是什 ...
React Native热部署之CodePush
IPAddress.h
#define MAXADDRS 32 extern char *if_names[MAXADDRS]; extern char *ip_names[MAXADDRS]; extern char *hw_addrs[MAXADDRS]; extern unsigned long ip_addrs[MAXADDRS]; void InitAddresses(); void FreeAddresses(); void GetIPAddresses(); void GetHWAddresses();
IPAddress.c
#include "IPAddress.h" #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <sys/ioctl.h> #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <netdb.h> #include <arpa/inet.h> #include <sys/sockio.h> #include <net/if.h> #include <errno.h> #include <net/if_dl.h> #define min(a,b) ((a) < (b) ? (a) : (b)) #define max(a,b) ((a) > (b) ? (a) : (b)) #define BUFFERSIZE 4000 char *if_names[MAXADDRS]; char *ip_names[MAXADDRS]; char *hw_addrs[MAXADDRS]; unsigned long ip_addrs[MAXADDRS]; static int nextAddr = 0; void InitAddresses() { int i; for (i = 0; i < MAXADDRS; ++i) { if_names[i] = ip_names[i] = hw_addrs[i] = NULL; ip_addrs[i] = 0; } } void FreeAddresses() { int i; for (i=0; i<MAXADDRS; ++i) { if (if_names[i] != 0) free(if_names[i]); if (ip_names[i] != 0) free(ip_names[i]); if (hw_addrs[i] != 0) free(hw_addrs[i]); ip_addrs[i] = 0; } InitAddresses(); } void GetIPAddresses() { int i, len, flags; char buffer[BUFFERSIZE], *ptr, lastname[IFNAMSIZ], *cptr; struct ifconf ifc; struct ifreq *ifr, ifrcopy; struct sockaddr_in *sin; char temp[80]; int sockfd; for (i = 0; i < MAXADDRS; ++i) { if_names[i] = ip_names[i] = NULL; ip_addrs[i] = 0; } sockfd = socket(AF_INET, SOCK_DGRAM, 0); if (sockfd < 0) { perror("socket failed"); return; } ifc.ifc_len = BUFFERSIZE; ifc.ifc_buf = buffer; if (ioctl(sockfd, SIOCGIFCONF, &ifc) < 0) { perror("ioctl error"); return; } lastname[0] = 0; for (ptr = buffer; ptr < buffer + ifc.ifc_len; ) { ifr = (struct ifreq *)ptr; len = max(sizeof(struct sockaddr), ifr->ifr_addr.sa_len); ptr += sizeof(ifr->ifr_name) + len; if (ifr->ifr_addr.sa_family != AF_INET) { continue; } if ((cptr = (char *)strchr(ifr->ifr_name, ':')) != NULL) { *cptr = 0; } if (strncmp(lastname, ifr->ifr_name, IFNAMSIZ) == 0) { continue; } memcpy(lastname, ifr->ifr_name, IFNAMSIZ); ifrcopy = *ifr; ioctl(sockfd, SIOCGIFFLAGS, &ifrcopy); flags = ifrcopy.ifr_flags; if ((flags & IFF_UP) == 0) { continue; } if_names[nextAddr] = (char *)malloc(strlen(ifr->ifr_name)+1); if (if_names[nextAddr] == NULL) { return; } strcpy(if_names[nextAddr], ifr->ifr_name); sin = (struct sockaddr_in *)&ifr->ifr_addr; strcpy(temp, inet_ntoa(sin->sin_addr)); ip_names[nextAddr] = (char *)malloc(strlen(temp) + 1); if (ip_names[nextAddr] == NULL) { return; } strcpy(ip_names[nextAddr], temp); ip_addrs[nextAddr] = sin->sin_addr.s_addr; ++nextAddr; } close(sockfd); } void GetHWAddresses() { struct ifconf ifc; struct ifreq *ifr; int i, sockfd; char buffer[BUFFERSIZE], *cp, *cplim; char temp[80]; for (i = 0; i < MAXADDRS; ++i) { hw_addrs[i] = NULL; } sockfd = socket(AF_INET, SOCK_DGRAM, 0); if (sockfd < 0) { perror("socket failed"); return; } ifc.ifc_len = BUFFERSIZE; ifc.ifc_buf = buffer; if (ioctl(sockfd, SIOCGIFCONF, (char *)&ifc) < 0) { perror("ioctl error"); close(sockfd); return; } ifr = ifc.ifc_req; cplim = buffer + ifc.ifc_len; for (cp = buffer; cp < cplim; ) { ifr = (struct ifreq *)cp; if (ifr->ifr_addr.sa_family == AF_LINK) { struct sockaddr_dl *sdl = (struct sockaddr_dl *)&ifr->ifr_addr; int a,b,c,d,e,f; int i; strcpy(temp, (char *)ether_ntoa(LLADDR(sdl))); sscanf(temp, "%x:%x:%x:%x:%x:%x", &a, &b, &c, &d, &e, &f); sprintf(temp, "%02X:%02X:%02X:%02X:%02X:%02X",a,b,c,d,e,f); for (i = 0; i < MAXADDRS; ++i) { if ((if_names[i] != NULL) && (strcmp(ifr->ifr_name,if_names[i]) == 0)) { if (hw_addrs[i] == NULL) { hw_addrs[i] = (char *)malloc(strlen(temp) + 1); strcpy(hw_addrs[i], temp); break; } } } } cp += sizeof(ifr->ifr_name) + max(sizeof(ifr->ifr_addr), ifr->ifr_addr.sa_len); } close(sockfd); }
示例:
- (NSString *)deviceIPAdress { InitAddresses(); GetIPAddresses(); GetHWAddresses(); return [NSString stringWithFormat:@"%s", ip_names[1]]; } - (void)viewDidLoad { NSString* address = [self deviceIPAdress]; NSString* myIPAdress = [NSString stringWithFormat:@"IP Address: %@", address]; textView.text = myIPAdress; }
发表评论
-
Error watching file for changes: EMFILE
2016-12-15 11:57 1299执行npm start后报错: Error watc ... -
CocoaPods升级1.1.1报错
2016-12-15 08:39 793ERROR: While executing gem .. ... -
Visual Studio Code运行React Native报错
2016-06-13 09:43 1612React Native:0.27.2 React:15 ... -
React Native 0.27.2编译报错this._nativeModule.addListener is not a function
2016-06-12 15:21 3854React Native:0.27.2 React:15 ... -
Unable to resolve module ReactDefaultPerf from
2016-06-02 13:04 2782package.json信息如下: "reac ... -
React Native 0.26.2编译报错Undefined symbols for architecture x86_64
2016-05-26 11:15 2014React Native:0.26.2 React:15. ... -
Failed to update auto layout status: Failed to load designables from path (null)
2016-04-05 22:11 1714确保CocoaPods是0.36.1以上版本,然后在podf ... -
集成微信支付出现Undefined symbols for architecture x86_64错误
2016-03-21 13:22 1751Undefined symbols for architec ... -
React Native热部署之CodePush
2016-01-10 22:27 6239本文使用的环境是Mac OS 10.11.1、Xcode ... -
浅谈React Native中的FlexBox布局
2015-11-17 18:38 4304React Native通过一个基于FlexBox的布局引 ... -
React Native之构建一个简单的列表页
2015-10-23 14:45 2160本文中我们将创建一个简单的电影应用,这个应用将从Rotten ... -
React Native之环境搭建
2015-10-20 16:30 1445本文使用的环境是Mac O ... -
获取图片属性的方法
2015-10-18 20:43 3142很多时候我们需要获 ... -
NSCache的下标用法
2015-09-18 00:19 1213NSCache类和NSDictionary类很相似,也提供 ... -
如何给category添加属性
2015-08-16 10:41 690主要是使用了runtime中的associative机制。 ... -
UITableView的两种重用Cell方法的区别
2015-08-10 13:07 16145UITableView中有两种重用Cell的方法: - ... -
SDImageCache.m报错Unused variable 'fileName'
2015-08-04 21:56 1172GCC手册中的相关解释: unused:This att ... -
Swift调用Objective-C
2015-07-13 23:33 1224Swift调用Objective-C需要一个名为<工程 ... -
使用GCD实现倒计时
2015-07-24 21:47 1083__block int timeout = 60; // ... -
导航栏加分割线的实现
2015-07-01 22:00 1761self.view.backgroundColor = [U ...
相关推荐
标题中的"pb获取ip地址/mac地址"指的是在PowerBuilder(简称pb)环境下获取计算机的IP地址和MAC地址。PowerBuilder是一种流行的.NET和Java应用程序开发工具,尤其适合于创建数据库驱动的应用程序。在这个场景中,...
### Java获取IP地址知识点解析 在本篇文章中,我们将深入探讨如何使用Java语言来获取IP地址。这是一项在网络编程中非常基础且重要的技能,能够帮助开发者了解客户端或服务器的网络位置信息。以下是对给定文件中的...
在处理网络故障时,用户无法获取IP地址是一个常见问题,尤其涉及到DHCP(Dynamic Host Configuration Protocol)客户端无法从DHCP服务器获取IP地址的情况。DHCP协议使得网络设备能够动态地从服务器获取IP地址配置...
### 非request方式获取IP地址 #### 1. 方法概述 本示例中的`getIp()`方法采用Java标准库中的`java.net.InetAddress`类来获取本地主机的IP地址。这种方法避免了使用HTTP请求或套接字连接所带来的复杂性,提供了一种...
在PowerBuilder 11.5(PB11.5)中获取IP地址和主机名是应用程序与网络通信的基础。这通常涉及到系统编程和网络API的使用。以下是对这个主题的详细解释。 首先,我们需要理解IP地址和主机名的概念。IP地址(Internet...
2. **获取IP地址**:`HttpServletRequest`对象有一个`getRemoteAddr()`方法,它返回客户端的IP地址。然而,如果应用运行在反向代理服务器(如Nginx)后,这个方法可能会返回代理服务器的IP。因此,我们需要检查`X-...
本文将深入探讨标题为“自动获取ip地址的BAT批处理”的主题,以及如何利用批处理脚本来实现这个功能。 批处理文件通常使用扩展名为`.bat`,它包含了Windows操作系统下的DOS命令。自动获取IP地址的批处理脚本主要...
### ASP.NET中获取IP地址及地理位置的详细解析 在当今互联网时代,获取用户IP地址及其地理位置成为许多应用程序的重要功能之一,特别是在网络安全、数据分析、个性化服务等领域。本文将深入探讨如何在ASP.NET应用中...
在MFC中,我们可以创建一个对话框类(CDialog-derived class),并在其中添加按钮或控件用于触发获取IP地址的操作。以下是一个简单的步骤概述: 1. **设置项目**: 创建一个新的MFC对话框应用程序,选择“MFC ...
3. **注意事项**:解释在某些网络环境下(如NAT、代理服务器)获取IP地址的复杂性,以及如何处理这些情况。 4. **兼容性**:列出支持的PHP版本和其他依赖项,以及可能的环境限制。 5. **许可证信息**:提供类库的...
"西门子200Smart获取IP地址和设置IP地址的相关知识点" 获取IP地址和设置IP地址的重要性 在工业自动化领域,获取IP地址和设置IP地址是非常重要的步骤,它们可以确保PLC(Programmable Logic Controller)能够正确地...
在Unix-like系统中,可以使用`getifaddrs()`函数来遍历所有网络接口,并通过`ifa_addr`字段获取IP地址。在Windows中,可以使用`GetAdaptersAddresses()`函数,同样通过遍历结果来获取IP地址。IP地址通常有IPv4和...
注意,获取IP地址时可能需要管理员权限,因为访问网络信息可能受到操作系统安全策略的限制。此外,如果计算机连接了多个网络(如有线和无线网络),那么可能会得到多个IP地址。 总结来说,通过C#编程,我们可以利用...
4. **提取IP地址**:从`hostEntry`或`addrList`结构中,可以获取IP地址。如果是`gethostbyname()`,可以从`hostEntry->h_addr_list`获取;如果是`getaddrinfo()`,则遍历`addrList`,从`ai_addr`字段提取。 ```cpp ...
总之,获取IP地址和主机名是网络通信的基础操作,无论是开发、运维还是日常使用,都经常需要用到。通过了解并熟练掌握这些方法,可以更好地理解和管理网络连接。同时,公网IP和内网IP的区分对于理解网络架构和安全也...
LabVIEW自动检测获取本机IP地址。 项目可直接运行~
在IT行业中,获取IP地址是一项基础且重要的任务,特别是在网络编程和服务器开发中。IP地址是互联网协议(IP)中的一个关键元素,用于唯一标识网络上的设备。在本文中,我们将详细探讨如何在不同的编程语言中获取IP...
本项目“获取IP地址,MAC地址”利用MFC和`netapi32.lib`库来实现获取网络适配器的IP和MAC信息。下面我们将详细探讨这个过程中的关键知识点。 首先,我们需要了解`netapi32.lib`库。这是一个Windows API库,提供了对...
JS 获取 IP 地址归属地 在网络开发中,获取用户的 IP 地址归属地是非常有用的功能,例如在电商平台中可以根据用户的 IP 地址归属地进行物流信息的显示和管理。在这篇文章中,我们将使用 JS 调用第三方 API 获取 IP ...