`

一个方便的STUN客户端

阅读更多
pystun
A python STUN client for getting NAT type, followed RFC 3489.

http://code.google.com/p/pystun/


学习XMPP Jingle,需要对STUN协议有个大概的了解.
STUN协议简单的理解是位于NAT或者防火墙后面的STUN客户端首先访问具有公网IP地址的STUN服务器,这样STUN服务器就会知道STUN客户端被NAT之后的公网IP地址和端口,然后STUN服务器会把这个信息返回给STUN客户端.

这个工具使用很方便直观,安装python后,然后运行stun_client_0.0.1.py,默认会连接public的STUN服务器 "stun.ekiga.net",输出如下:


从上面可以看出STUB客户端已经知道了我通过ADSL拨号获得的公网IP地址. 访问我的无线路由器,查看WAN口的IP地址,可以发现和STUN客户端所获得的IP地址一样:


可用的STUN服务器有:
    * stun.ekiga.net
    * stun.fwdnet.net
    * stun.ideasip.com
    * stun01.sipphone.com (no DNS SRV record)
    * stun.softjoys.com (no DNS SRV record)
    * stun.voipbuster.com (no DNS SRV record)
    * stun.voxgratia.org (no DNS SRV record)
    * stun.xten.com
    * stunserver.org see their usage policy
    * stun.sipgate.net:10000
如果哪个访问不了,可以修改代码来访问别的STUB服务器.

下面的链接有一些不错的信息可以参考:
http://www.voip-info.org/wiki/view/STUN
  • 大小: 60.9 KB
  • 大小: 15.8 KB
1
1
分享到:
评论
2 楼 bluky999 2012-04-20  
pystun 0.0.1的项目已经从google code上移除了,0.0.2版本在github: https://github.com/jtriley/pystun


另外我这里有提供一个打包好的 .exe 版本方便windows用户使用 
http://nodex.iteye.com/blog/1490256
1 楼 bluky999 2012-03-09  
这里有一个支持新版本STUN的客户端 https://github.com/node/turn-client
当然主要是TURN 

相关推荐

    Go-go-stun-STUN客户端(RFC3489和RFC5389)的一个Go实现

    2. **创建客户端**:使用`stun.NewClient()`创建一个STUN客户端实例。 3. **发送请求**:调用`client.DoTransaction()`方法发送STUN绑定请求到指定服务器。 4. **接收响应**:处理返回的响应,从中获取客户端的公网...

    NAT探测 使用stun协议 java和python版本

    Java中的"stun4j"库是一个用于STUN和TURN(Traversal Using Relays around NAT)服务的客户端库,提供了处理NAT穿透所需的基本功能。开发者可以使用stun4j来创建STUN请求,解析响应,从而获取到必要的网络信息。 ...

    可用的stun server

    这个工具可能包括一个STUN客户端,它会发送请求到STUN服务器,并接收包含其公共IP和端口信息的响应。通过这种方式,用户可以检查他们的设备是否被NAT阻隔,以及如何配置应用程序以正确地进行通信。 提到的博文链接...

    p2pSDK_stunclient_stun_TheClient_p2psdk_源码.zip

    - **API接口**:方便其他应用集成STUN客户端功能。 - **示例代码**:展示如何使用SDK进行基本操作,如初始化、发送请求、处理响应等。 - **文档**:详细说明如何使用SDK,包括配置、编译、错误处理等。 - **测试工具...

    基于STUN协议得到NAT转换后的IP和端口源代码

    源代码中的"stunclientdemo"很可能是实现STUN客户端功能的示例程序。这个客户端通常会执行以下步骤: 1. **连接到STUN服务器**:客户端首先需要找到一个公开的STUN服务器,并建立TCP或UDP连接。 2. **发送Binding...

    STUN-RFC5389中英文合集.zip

    **STUN(Session Traversal Utilities for NAT,NAT穿越会话工具)协议是网络通信领域中的一个重要技术,它主要用于解决因网络地址转换(NAT,Network Address Translation)引起的通信问题。RFC5389是定义STUN协议...

    webRTC 使用Janus 做的客户端页面

    在这个场景中,Janus 是一个流行的WebRTC服务器,它是一个可扩展的多功能网关,用于处理各种实时通信场景,如语音和视频会议、一对一通话、多对多聊天等。 Janus WebRTC 服务器具有以下关键特点: 1. **插件架构**...

    STUN:UDP穿隧道(隧道),NAT穿透(隧道)

    1. **请求与响应**:STUN客户端向STUN服务器发送请求报文,请求报文中包含了客户端的私网IP和端口。服务器接收到请求后,将这个信息返回给客户端,作为响应报文的一部分。 2. **公网映射检测**:当客户端收到响应...

    P2P文件传输,包含有客户端和服务器端的详细代码.rar

    2. **跟踪器(Tracker)**:虽然P2P网络不需要中心服务器,但为了方便节点间的发现和连接,通常会有一个或多个跟踪器服务器。节点在加入网络时,会向跟踪器注册,并获取其他活跃节点的信息。 3. **哈希表(Hash ...

    Go-gopeed-支持多协议HTTPBitTorrent下载的客户端

    Go-gopeed支持HTTP协议意味着它可以作为一个标准的HTTP客户端,通过发起HTTP请求来下载网络资源,这在处理常规网页链接下载时非常方便。 2. **BitTorrent协议**: BitTorrent是一种对等网络文件分享协议,特别适用于...

    C++ P2P源代码包含服务器和客户端

    6. **服务器角色**:虽然P2P网络强调去中心化,但在初期启动阶段,可能需要一个中心服务器来帮助节点发现彼此。这个“服务器”在源码中可能作为一个辅助角色存在。 7. **客户端实现**:客户端代码负责连接到网络,...

    内网穿透客户端无需要扩展版源码.zip_PHP 穿透内网_obtainpyb_php_php实现内网穿透_穿透

    标题提到的是一个基于PHP实现的内网穿透客户端源码,无需额外扩展,简化了使用过程。 在描述中提到了"纯php开发 简洁",这意味着这个内网穿透工具是用PHP语言编写的,并且设计简洁,易于理解和部署。PHP是一种广泛...

    holer-client-v1.0_holer下载_内网穿透_

    标题中的“holer-client-v1.0_holer下载_内网穿透_”表明这是一个名为"Holer"的客户端软件,版本为v1.0,主要用于实现内网穿透功能。内网穿透,也称为NAT穿透,是一种网络技术,允许内网中的设备通过公网访问或被...

    RFC3489.zip_RFC3489

    标题"RFC3489.zip_RFC3489"中,"RFC3489"是互联网请求评论(Request for Comments)文档的一个编号,这是一种技术规范,通常由互联网工程任务组(IETF)发布。这里提到的".zip"表明这个文档被压缩在了一个ZIP文件中...

    基于MFC的UDP打洞通信服务器程序

    服务器会发送一个带有其IP和端口信息的特殊消息给客户端,客户端收到后将这个信息传递给它的NAT设备,请求NAT为特定的外部IP和端口建立一条通道。一旦通道建立,两个客户端就可以直接通过UDP交换数据,而不必通过...

    P2P之UDP穿透NAT的原理与实现源码

    NAT(Network Address Translation)是互联网中的一个重要技术,用于解决IP地址短缺问题,但它会阻碍P2P通信,因为同一内网的设备对外显示相同的公共IP。 NAT穿透,又称为端口映射或打洞,是为了使两个处于NAT后的...

    DOL 工具集2.51

    DOL(可能是“Digital Operation Logic”或类似缩写)可能是一个特定的软件平台,用于企业的运营或数据管理。通过此工具集,用户可以方便地进行配置、更新、监控和故障排查,确保DOL客户端的稳定运行。 2. **清除IE...

    通过UDP实现的NAT穿透测试程序

    2. **STUN服务器**:STUN(简单Traversal of NAT)服务器是一个公开的网络服务,可以提供内网设备的公网映射信息。设备向STUN服务器发送请求,服务器会返回设备在NAT后的公网IP和端口,然后设备可以使用这些信息来...

    SipClient:Sip客户端用于开发和测试目的

    SipClient是一个专为开发和测试SIP应用程序设计的客户端工具。这个项目是用Java语言编写的,Java作为一种跨平台且功能强大的编程语言,非常适合构建网络通信应用。 在SipClient中,开发者可以利用它来实现以下关键...

    VC++6.0编写的局域网聊天室工具

    4. 接受连接:accept()函数接收客户端的连接请求,并创建一个新的套接字用于与客户端通信。 客户端的实现主要包括: 1. 创建套接字:同样使用socket()函数创建套接字。 2. 连接:connect()函数尝试连接到服务器的...

Global site tag (gtag.js) - Google Analytics