[英]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.