python获取本机局域网ip和公网ip

1.本地局域网IP

局域网ip比较好获取,只需要udp协议访问一下DNS地址即可

import socket


def get_host_ip():
    s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    try:
        s.connect(('8.8.8.8', 80))  # 114.114.114.114也是dns地址
        ip = s.getsockname()[0]
    finally:
        s.close()
    return ip


print("本机局域网IP是:", get_host_ip())

2.获取公网IP

公网ip很简单,我们请求一下专门获取ip的服务即可,类似于你百度一下“IP”,服务器会读取你的远程IP然后给你返回来

from urllib.request import urlopen

ip = urlopen('http://ip.42.pl/raw').read().decode()
print('本机所在公网IP是:', ip)

评论