2010-07-03 4 views
0

Je construis une application dans Adobe Air 2 avec AS3 et j'ai besoin d'obtenir l'adresse IP de l'utilisateur. D'après ce que je comprends, ce code devrait fonctionner, mais trace: ":: 1" pas une ip. Je vous remercie.Obtenir l'adresse IP avec Adobe Air 2

var netInterfaces = NetworkInfo.networkInfo.findInterfaces(); 

var addresses = netInterfaces[0].addresses; 

var userIp = addresses[0].address; 

trace(userIp); 

Répondre

0

Le code que vous avez écrit renvoie en réalité l'adresse IP de la première interface réseau trouvée. Ce est dans votre cas, le soi-disant dispositif de réalimentation qui est utilisé pour les connexions locales

avec IP4 l'adresse IP 127.0.0.1 serait

avec IP6 l'IP-adresse est :: 1

+0

pousse, comment puis-je y arriver alors ?? (et je suis le seul quand IPv6 confond la merde de) –

+0

dépend de ce que vous voulez atteindre, si vous voulez connaître l'adresse que l'application air utilise pour se connecter à votre serveur, essayez de l'obtenir sur le côté serveur, Si vous voulez que toutes les adresses, à l'exception de localhost, vérifient la propriété netInterfaces.name, si vous voulez que seules les adresses ip4 filtrent les adresses du tableau d'adresses par type. –

6

Si vous voulez que l'adresse IP réelle et non pas votre localhost, utilisez ceci:

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

Si vous êtes sur Android, ne pas oublier de définir des autorisations:

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

et n'oubliez pas de définir des autorisations si votre sur Android: MyFlashLab

0

Essayez cette

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);   
     } 
    } 
    } 
}