python stun客户端,用于获取nat类型和外部ip(rfc 3489)

pystun的Python项目详细描述


https://travis-ci.org/jtriley/pystun.svg?branch=masterhttps://coveralls.io/repos/jtriley/pystun/badge.png

Pystun

python stun客户端,用于获取nat类型和外部ip

这是一个由高鹰(http://code.google.com/p/pystun/)最初创建的pystun叉

Pystun遵循RFC 3489:http://www.ietf.org/rfc/rfc3489.txt

在Internet上找不到跟踪stun bis的服务器,因此rfc3489是 只有执行。

安装

要安装最新版本:

$ pip install pystun

或下载/克隆源并使用以下命令手动安装:

$ cd /path/to/pystun/src
$ python setup.py install

如果您正在对pystun进行黑客攻击,则应改用“develop”命令:

$ python setup.py develop

这将链接到站点包目录中的源,以便 任何更改都可以立即进行测试。

使用量

从命令行:

$ pystun
NAT Type: Full Cone
External IP: <your-ip-here>
External Port: 54320

通过–更多选项的帮助:

% pystun --help
usage: pystun [-h] [-d] [-H STUN_HOST] [-P STUN_PORT] [-i SOURCE_IP]
              [-p SOURCE_PORT] [--version]

optional arguments:
  -h, --help            show this help message and exit
  -d, --debug           Enable debug logging (default: False)
  -H STUN_HOST, --host STUN_HOST
                        STUN host to use (default: None)
  -P STUN_PORT, --host-port STUN_PORT
                        STUN host port to use (default: 3478)
  -i SOURCE_IP, --interface SOURCE_IP
                        network interface for client (default: 0.0.0.0)
  -p SOURCE_PORT, --port SOURCE_PORT
                        port to listen on for client (default: 54320)
  --version             show program's version number and exit

来自python:

import stun
nat_type, external_ip, external_port = stun.get_ip_info()

这将在stun服务器的内部列表中循环,直到响应为 找到了。如果没有找到响应,您将被“阻塞”为nat_type并且 none对于external_ipexternal_port

如果您喜欢使用特定的stun服务器:

nat_type, external_ip, external_port = stun.get_ip_info(stun_host='stun.ekiga.net')

如果您喜欢使用特定的stun服务器端口:

nat_type, external_ip, external_port = stun.get_ip_info(stun_port=3478)

您还可以指定使用的客户机接口和端口,尽管 不需要:

sip = "0.0.0.0" # interface to listen on (all)
port = 54320 # port to listen on
nat_type, external_ip, external_port = stun.get_ip_info(sip, port)

阅读代码了解更多详细信息…

许可证

麻省理工学院

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何提高我的软件项目的速度?   java将Jetty嵌入JavaSE项目   数组中的java重复字符   java我的Shell排序没有按预期工作,我需要一些帮助来找出我做错了什么   java如何在JBoss EAP6/AS7中应用先过滤后安全约束   java使用一个随机运算符来处理多个变量   java为什么我不能在文件中写我的二叉树?   java应用程序不会在Eclipse emulator上运行   我第一次尝试制作一个简单的基于瓷砖的java游戏   java为TermVectors安装Solr修补程序   java无法将更新的对象值从客户端发送到服务器,服务器读取不存在的值   Azure,java sdk,使用ARM模板部署无法转换参数文件   是否有一个Java等价于空合并运算符(?)在C#?   java如果只初始化了超类对象,是否可以调用特定于子类的方法?   向类文件传递值时出现java NullPointerException   java模不起作用   java Android TranslateAnimation动态更新布局的大小   数据结构如何在java中实例化队列对象?   java如果用户选择一些随机的相机应用程序,如何在安卓中正确处理相机意图?