2010-07-03 115 views
0

我使用AS3在Adobe Air 2中构建应用程序,并且需要获取用户ip地址。从我所了解的代码应该工作,但追踪:“:: 1”不是IP。谢谢。使用Adobe Air获取IP地址2

var netInterfaces = NetworkInfo.networkInfo.findInterfaces(); 

var addresses = netInterfaces[0].addresses; 

var userIp = addresses[0].address; 

trace(userIp); 

回答

0

您编写的代码实际上会返回它找到的第一个网络接口的IP地址。 这是你的情况下,它用于本地连接

与IP4的IP地址是127.0.0.1所谓的回环设备

与IP6的IP-ADRESS是:: 1

+0

拍,我怎么能做到这一点,然后? (我是唯一一个当IPv6混淆了垃圾) – 2010-07-03 07:28:06

+0

取决于你想达到什么,如果你想知道空气应用程序用来连接到你的服务器的地址,尝试在服务器端获取它,如果你想要每个地址但本地主机检查netInterfaces.name属性,如果你只想ip4地址过滤来自地址数组的类型的地址。 – 2010-07-03 08:07:20

6

如果你想真正的IP,而不是你的本地主机,使用此:

private function getIp():String{ 
    var netInterfaces:Vector.<NetworkInterface> = NetworkInfo.networkInfo.findInterfaces(); 
    var addresses:Vector.<InterfaceAddress> = netInterfaces[1].addresses; 
    return addresses[0].address;  
} 

如果您使用的是Android,不要忘记设置权限:

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> 
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/> 
+0

并且不要忘记在Android上设置权限: MyFlashLab 2013-09-29 08:59:24

0

试试这个

var netInterfaces:Vector.<NetworkInterface> = NetworkInfo.networkInfo.findInterfaces(); 
if (netInterfaces && netInterfaces.length > 0) {  
    for each (var i:NetworkInterface in netInterfaces) { 
    if (i.active) { 
     var addresses:Vector.<InterfaceAddress> =i.addresses; 
     for each (var j:InterfaceAddress in addresses) { 
     trace("- Host : " + j.address);   
     } 
    } 
    } 
}