首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >检索NAT类型和外部IP地址

检索NAT类型和外部IP地址
EN

Stack Overflow用户
提问于 2018-09-18 14:53:57
回答 2查看 221关注 0票数 1

到目前为止,我尝试使用吡坦,但遵循手册:

代码语言:javascript
复制
import stun
nat_type, external_ip, external_port = stun.get_ip_info()

产量:

代码语言:javascript
复制
>>> import stun
>>> nat_type, external_ip, external_port = stun.get_ip_info()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python3.6/dist-packages/stun/__init__.py", line 253, in get_ip_info
    stun_host=stun_host, stun_port=stun_port)
  File "/usr/local/lib/python3.6/dist-packages/stun/__init__.py", line 186, in get_nat_type
    _initialize()
  File "/usr/local/lib/python3.6/dist-packages/stun/__init__.py", line 93, in _initialize
    dictValToAttr.update({items[i][1]: items[i][0]})
TypeError: 'dict_items' object does not support indexing

看起来存储库已经不再维护了。我发现[医]止痛剂非常快地获取IP地址,不幸的是它没有提供NAT类型的信息。

有效地检索两者的替代方法是什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-09-18 15:14:59

这可能是python版本的一个问题,pystun的原始代码使用2.x,而您使用3.x

查看产生错误的源代码行,我们可以看到它调用字典.items()方法并尝试按位置访问其成员。

以下是问题所在:

  • python 2.x中,dict.items()返回一个元组列表。
  • python 3.x中,dict.items()返回一个不能按位置访问的视图,只能迭代一次。

简短的回答:您不能在pystun回购中使用python 3.x;也许可以进行一些修补,或者您可以自己复制和修改源代码,而不是依赖外部回购。

票数 0
EN

Stack Overflow用户

发布于 2020-05-08 10:35:53

您可以使用PyNAT,它基于pystun并支持python3。

它也在PyPi上,可以与pip install pynat一起安装。

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

https://stackoverflow.com/questions/52389350

复制
相关文章

相似问题

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