获取本机IP地址

这里有两种方法:

 1 //获取本机IP
 2 - (NSString *)localIPAddress
 3 {
 4     NSString *localIP = nil;
 5     struct ifaddrs *addrs;
 6     if (getifaddrs(&addrs)==0) {
 7         const struct ifaddrs *cursor = addrs;
 8         while (cursor != NULL) {
 9             if (cursor->ifa_addr->sa_family == AF_INET && (cursor->ifa_flags & IFF_LOOPBACK) == 0)
10             {
11                 {
12                     localIP = [NSString stringWithUTF8String:inet_ntoa(((struct sockaddr_in *)cursor->ifa_addr)->sin_addr)];
13                     break;
14                 }
15             }
16             cursor = cursor->ifa_next;
17         }
18         freeifaddrs(addrs);
19     }
20     return localIP;
21 }
 1 // 获取本机IP地址
 2 - (NSString *)getIPAddress
 3 {
 4     NSString *address = @"error";
 5     struct ifaddrs *interfaces = NULL;
 6     struct ifaddrs *temp_addr = NULL;
 7     int success = 0;
 8
 9     // retrieve the current interfaces - returns 0 on success
10     success = getifaddrs(&interfaces);
11     if (success == 0) {
12         // Loop through linked list of interfaces
13         temp_addr = interfaces;
14         while (temp_addr != NULL) {
15             if( temp_addr->ifa_addr->sa_family == AF_INET) {
16                 // Check if interface is en0 which is the wifi connection on the iPhone
17                 if ([[NSString stringWithUTF8String:temp_addr->ifa_name] isEqualToString:@"en0"]) {
18                     // Get NSString from C String
19                     address = [NSString stringWithUTF8String:inet_ntoa(((struct sockaddr_in *)temp_addr->ifa_addr)->sin_addr)];
20                 }
21             }
22
23             temp_addr = temp_addr->ifa_next;
24         }
25     }
26
27     // Free memory
28     freeifaddrs(interfaces);
29
30     return address;
31 }
时间: 2024-10-14 10:42:40

获取本机IP地址的相关文章

关于是用dotnet获取本机IP地址+计算机名的方法

印象中在maxscript帮助文档里找到过方法,但是当时没记下来.只能通过dotnet实现了. 如果电脑有无线网卡和本地连接,可能会出现乱码,也问了写dotnet的朋友,提供了一些思路,不过最终还是使用了这个笨办法. fn getIP_PCname = ( cc = (dotnetclass "System.Net.Dns") oo = cc.GetHostAddresses(cc.GetHostName()) for ip = 1 to oo.count do ( getip = f

java获取本机IP地址

/** * WIFI没打开:ip为127.0.0.1 * 获取本机IP地址字符串 * @return */ public String getWifiIp() { if (!getWifiEnabled()) { return "127.0.0.1"; } WifiInfo wifiInfo = mWifiManager.getConnectionInfo(); int ipAddress = wifiInfo.getIpAddress(); String ip = intToIp(i

Linux编程获取本机IP地址

使用函数getifaddrs来枚举网卡IP,其中使用到的结构体如下所示: struct ifaddrs { struct ifaddrs *ifa_next; /* Next item in list */ char *ifa_name; /* Name of interface */ unsigned int ifa_flags; /* Flags from SIOCGIFFLAGS */ struct sockaddr *ifa_addr; /* Address of interface *

#获取本机IP地址时排除IPv6类型,只返回IPv4地址的方法

public static string GetLocalIP(){try{string HostName = Dns.GetHostName(); //得到主机名IPHostEntry IpEntry = Dns.GetHostEntry(HostName); for (int i=0; i < IpEntry.AddressList.Length; i++){//从IP地址列表中筛选出IPv4类型的IP地址//AddressFamily.InterNetwork表示此IP为IPv4,//Ad

Python 获取本机IP地址

import socket #获取本机IP地址 self.local_ip = socket.gethostbyname(socket.gethostname()) print (self.local_ip) python 判断本机是否联网 1 timeout = 200 2 host = 'www.baidu.com' 3 port = 80 4 s=socket.socket() 5 s.settimeout(timeout) 6 status = s.connect_ex((host,po

C# 获取本机IP地址以及转换字符串

/// <summary> /// IP地址转化 /// </summary> /// <param name="ipaddr">整型的IP地址</param> /// <returns>字符串的IP地址</returns> private string UintIPToStringIP(uint ipaddr) { string hexStr = ipaddr.ToString("X8");

Qt获取本机IP地址

Qt获取本机IP地址: Qt版本:4.8.6 #include <QtNetwork/QNetworkInterface.h> QString ipAddr; QList<QHostAddress> list = QNetworkInterface::allAddresses(); foreach (QHostAddress address, list) { if (address.protocol() == QAbstractSocket::IPv4Protocol) { ipA

详谈再论JAVA获取本机IP地址

首先,你如果搜索“JAVA获取本机IP地址”,基本上搜到的资料全是无用的.比如这篇:http://www.cnblogs.com/zrui-xyu/p/5039551.html实际上的代码在复杂环境下是不准的 网上一个比较普遍的说法是InetAddress.getLocalHost().getHostAddress()似乎很简单,但忽略了一个问题,即IP地址在现在的网络环境更加复杂了,比如有Lan,WIFI,蓝牙热点,虚拟机网卡...即存在很多的网络接口(network interfaces),

用java获取本机IP地址

在网上找了几个用java获取本机IP地址的代码,发现都少都有些不完美,自己整理了一下.突然之间很想把自己的IP地址给获取了,虽然用系统自带命令可 以得到,但自己想写一个程序获取一下,到网上搜索了一下java获取本机IP地址的方法,结果居然发现没有一个是可以用的,气的我老人家吐血, 这些人闭着眼睛写程序,写完了就往网上发,也不测试一下,害的我以为自己RP问题,老是获取不到正确的IP地址,强烈谴责!!!为了表示鄙视,现把网上找到的主要的两种方法的不足给指出一下方法一(只能在Windows上使用,Li