2016-03-03 98 views
0

我正在尝试编写一个函数来返回我的网络中的第一个非回送ipv4地址。我可以做任何事情,除了检查一个地址是否是一个回环地址有没有办法做这个nodejs?这里是我的功能:如何检查地址是否是回送地址nodejs

function externalIP(){ 
    var addrs = os.networkInterfaces(); 
    var address = "" 

    for(var key in addrs){ 
    for (var k in addrs[key]) { 
     if(addrs[key][k].family == "IPv4"){ 
     console.log(addrs[key][k].address); 
     /* HERE I NEED TO CHECK IF THE ADDRESS IS A LOOPBACK ADDRESS */ 
     address = addrs[key][k].address 
     break 
     } 
    } 
    // check if address is already set we can return the result 
    if (address != ""){ 
     break 
    } 
    } 

    return address 
} 

回答

0

最后我只是在做一个基于正则表达式的解决方案在这里它是:

function externalIP() { 
    var addrs = os.networkInterfaces(); 
    var address = "" 

    for (var key in addrs) { 
    for (var k in addrs[key]) { 
     if (addrs[key][k].family == "IPv4") { 
     // Check if loopback address 
     var re = /^(127\.[\d.]+|[0:]+1|localhost)$/ 
     var result = addrs[key][k].address.match(re) 
     if (result == null) { 
      address = addrs[key][k].address; 
      break 
     } 
     } 
    } 
    // If address is already set we can return the result 
    if (address) { 
     break 
    } 
    } 

    return address 
}