import socket
import fcntl
import struct
def get_ip_address(ifname):
skt = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
print skt
pktString = fcntl.ioctl(skt.fileno(), 0x8915, struct.pack('256s', ifname[:15]))
print pktString
ipString = socket.inet_ntoa(pktString[20:24])
print ipString
return ipString
print get_ip_address('lo')
print get_ip_address('eth1')
Windows:
import re,urllib2
from subprocess import Popen, PIPE
print "本机的私网IP地址为:" + re.search('\d+\.\d+\.\d+\.\d+',Popen('ipconfig', stdout=PIPE).stdout.read()).group(0)
print "本机的公网IP地址为:" + re.search('\d+\.\d+\.\d+\.\d+',urllib2.urlopen("http://www.7qiao.cn/ip.php").read()).group(0)
===========================
获取本机IP和Port,远程IP和Port
# -*- coding: cp936 -*-
"""
使用socket获取更多的信息
getsocketname:获得本机的信息(IP和port)
getpeername:获得远程机器的信息(IP和port)
fileno:每一个socket对应一个fd,使用此方法可以获得fd,为一个整数
"""
import socket</code>
s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
port = socket.getservbyname("http","tcp")
s.connect(("www.google.com",port))
print "Connect from",s.getsockname()
print "Connect to",s.getpeername()
print "file descriptor",s.fileno()
s.close()
直接获取远程IP
import socket
socket.gethostbyname('google.com')
直接获取本地IP
import socket
socket.gethostbyname(socket.gethostname())
socket.gethostbyname_ex(socket.gethostname())
本文介绍了在不同操作系统中获取本机IP地址的方法,包括通过Python的socket库在Linux中获取指定网络接口的IP地址,以及在Windows系统中利用命令行和网络请求获取私网和公网IP地址。
31万+

被折叠的 条评论
为什么被折叠?



