如何在Python中获取套接字的外部IP?

时间:2020-03-05 18:52:01  来源:igfitidea点击:

当我在套接字对象上调用socket.getsockname()时,它将返回机器内部IP和端口的元组。但是,我想检索我的外部IP。什么是最便宜,最有效的方式?

解决方案

回答

没有外部服务器的配合,这是不可能的,因为我们和另一台计算机之间可以有任意数量的NAT。如果是自定义协议,则可以要求另一个系统报告其连接的地址。

回答

我认为可以保证为我们提供的唯一方法是点击http://whatismyip.com/之类的服务来获取它。

回答

进口插座

s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)

s.connect((" msn.com",80))

s.getsockname()

回答

使用http://whatismyip.com来源中建议的地址

import urllib
def get_my_ip_address():
    whatismyip = 'http://www.whatismyip.com/automation/n09230945.asp'
    return urllib.urlopen(whatismyip).readlines()[0]