簡體   English   中英

python指定的IP地址到公共IP地址?

[英]python specifying ip address to public ip address?

在do.py

servport = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
servport.bind( (socket.gethostname(), 0) )

wrapper = 'doing.py'
pid = os.fork()
if not pid:
       argv = [sys.executable, wrapper, '%s:%d' % servport.getsockname()]
       os.execv(argv[0], argv)
try:
    print "do.py: someone connect to me"
    servport.listen(1)
    (send_sock, got_addr) = servport.accept()
    print "do.py: connected from %s" % str(got_addr)

在做.py

print "doing.py: got %s" % str(sys.argv)
(host, port) = sys.argv[1].split(':')
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect( (host,port) )

我看到'%s:%d' % socket.getsockname()給出了127.0.1.1:36802

但是我的公共IP地址是以98開頭的 。*如果我在盒子(ubuntu)上執行ifconfig,我的wlan0為192.168。

我閱讀並了解到,ip地址和127有不同的類別 。*基本上是說該數據包發往同一台計算機上運行的另一個應用程序。

我該如何編碼,以便'%s:%d' % socket.getsockname()給出我的98 。*?


從建議中,如果我在servport.bind( ('0.0.0.0', 0) )更改為servport.bind( ('0.0.0.0', 0) )

我得到
do.py:有人聯系我
doing.py:得到了['doing.py',0.0.0.0:41107']
do.py:從('127.0.0.1',43871)連接

這是否意味着我的數據包實際上是在網絡外部發送並返回的? <-----

引用此問題: 使用Python的stdlib查找本地IP地址

使用socket.getfqdn解析您的合格主機名。

然后使用socket.gethostbyname將其上載為可解析的IP地址

像這樣

>>>從套接字導入gethostbyname,getfqdn

>>> gethostbyname(getfqdn())

'0.0.0.0'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM