10

socket.getsockname()ソケット オブジェクトを呼び出すと、マシンの内部 IP とポートのタプルが返されます。ただし、外部 IP を取得したいと考えています。これを行うための最も安価で効率的な方法は何ですか?

4

9 に答える 9

9

これは、外部サーバーからの協力がなければ不可能です。これは、あなたと他のコンピューターの間に任意の数の NAT が存在する可能性があるためです。カスタム プロトコルの場合は、他のシステムに接続先のアドレスを報告するように依頼できます。

于 2008-09-12T04:23:53.853 に答える
6

私が考えることができる唯一の方法は、http://whatismyip.com/のようなサービスにアクセスして入手することです。

于 2008-09-12T04:24:34.473 に答える
5

https://github.com/bobeirasa/mini-scripts/blob/master/externalip.py

'''
Finds your external IP address
'''

import urllib
import re

def get_ip():
    group = re.compile(u'(?P<ip>\d+\.\d+\.\d+\.\d+)').search(urllib.URLopener().open('http://jsonip.com/').read()).groupdict()
    return group['ip']

if __name__ == '__main__':
    print get_ip()
于 2011-11-29T04:11:24.903 に答える
2

輸入ソケット

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

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

s.getsockname()

于 2008-11-02T01:17:04.173 に答える
1
print (urllib.urlopen('http://automation.whatismyip.com/n09230945.asp').read())
于 2012-01-13T10:10:36.577 に答える
0

http://whatismyip.comのソースで提案されているアドレスを使用する

import urllib
def get_my_ip_address():
    whatismyip = 'http://www.whatismyip.com/automation/n09230945.asp'
    return urllib.urlopen(whatismyip).readlines()[0]
于 2010-04-15T14:46:48.980 に答える