首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >python将ip地址指定为公共ip地址?

python将ip地址指定为公共ip地址?
EN

Stack Overflow用户
提问于 2013-09-14 17:42:14
回答 1查看 175关注 0票数 0

在do.py中

代码语言:javascript
复制
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)

在doing.py中

代码语言:javascript
复制
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) ) in do.py

我得到了

do.py:有人跟我联系

doing.py: got 'doing.py',0.0.0.0:41107‘

do.py:连接自('127.0.0.1',43871)

这是否意味着我的数据包实际上是从我的网络外发送回来的?<?

EN

回答 1

Stack Overflow用户

发布于 2013-09-14 17:56:31

引用此问题:Finding local IP addresses using Python's stdlib

使用socket.getfqdn解析您的限定主机名。

然后使用socket.gethostbyname将其提交到可解析的ip地址。

就像这样

从套接字导入gethostbyname,getfqdn gethostbyname(getfqdn()) “0.0.0.0”

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18804591

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档