bluescorpio
Windows下2种方法:
1.
使用拨号上网的话,一般都有一个本地ip和一个外网ip,使用python可以很容易的得到这两个ip
使用gethostbyname和gethostbyname_ex两个函数可以实现

import socket
localIP 
= socket.gethostbyname(socket.gethostname())#得到本地ip
print "local ip:%s "%localIP

ipList 
= socket.gethostbyname_ex(socket.gethostname())
for i in ipList:
    
if i != localIP:
       
print "external IP:%s"%i

 

 2.

import socket

myname 
= socket.getfqdn(socket.gethostname())
myaddr 
= socket.gethostbyname(myname)

 

还有一种Linux下的方法可以用的是:

Uses the Linux SIOCGIFADDR ioctl to find the IP address associated with a network interface, given the name of that interface, e.g. "eth0". The address is returned as a string containing a dotted quad.

import socket
import fcntl
import struct

def get_ip_address(ifname):
    s 
= socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    
return socket.inet_ntoa(fcntl.ioctl(
        s.fileno(),
        
0x8915,  # SIOCGIFADDR
        struct.pack(\'256s\', ifname[:15])
    )[
20:24])

 

 

>>> get_ip_address(\'lo\')
\'127.0.0.1\'

>>> get_ip_address(\'eth0\')
\'38.113.228.130\'

 

Java版本:

    private Set getAllLocalHostIP() throws UnknownHostException{
        Set result 
= new HashSet();
        InetAddress addr 
= InetAddress.getLocalHost();
        String hostName 
= addr.getHostName();
        
if(hostName.length() > 0){
            InetAddress[] addrs 
= InetAddress.getAllByName(hostName);
            
if(addrs.length > 0){
                
for(int i=0; i<addrs.length; i++){
                    result.add(addrs[i].getHostAddress());
                }
            }
        }
        
        result.add(
"127.0.0.1");
        
return result;        
    }

 

 

 

 

分类:

技术点:

相关文章:

  • 2021-11-30
  • 2021-11-30
  • 2021-11-30
  • 2021-12-05
  • 2021-12-31
  • 2021-11-02
  • 2021-12-28
  • 2022-01-09
猜你喜欢
  • 2021-12-24
  • 2021-10-24
  • 2021-12-05
  • 2021-12-15
  • 2021-12-05
  • 2021-10-16
  • 2021-11-04
  • 2021-11-19
相关资源
相似解决方案