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

 

 

 

 

版权声明:本文为bluescorpio原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/bluescorpio/archive/2011/07/19/2110822.html