由于GitHub原著为英文,且相当的啰嗦,本文为翻译内容并去除其啰嗦的部分

重点:代码只支持Python

Python版本开源互联网点对点软件

关键词:SIP, P2P, Python, p2psip, DHT, implementation

解释:网络电话可以是对等体系的应用,参与者不需要依赖昂贵或管理的服务提供者的情况下彼此定位和通讯。

本项目目标是使用Python语言中的会话启动协议(P2P-SIP)来实现开源的点对点(peer-tp-peer,简称P2P)的互联网通话软件,项目支持开放协议,如IETF SIP和RTP

peer-to-peer系统优点:具有高扩展性、容错性、针对灾难性故障的稳健性。因为它没有中央服务器,并且没有网络自我组织

代码结构

src/tools/htmlify.py工具用于生成带注释的web视图代码

src/app下面包含了,如SIP客户端(voip.py),使用Bamboo的DHT(dht.py)等等

src/std下面包含了各种IETF RFC实现的Internet草案,例如RFC 3261, RFC 3550, RFC 2617等等

有些模块是未完成的半成品

代码整体分为两部分 - standards和applications。 某些RFC和Internet-drafts中指定的standards在std包中实现,而高级应用程序在app包中实现。 构建此项目的主要优点之一是源代码在代码行方面要少得多。

下表总结了std包的内容,并允许使用从相应规范中提取的嵌入式文档来浏览源代码。

ModuleDescriptionLines

实现 RTP payload type for 冗余音频数据.

45

实现各种形式的地址 such as URI or SIP 地址

177

实现在 SIP 中可重用的 HTTP 基本和摘要式的身份验证

131

实现在 RTP 数据包中的 DTMF 按键音有效负载

40

实现会话启动协议(SIP)的用户代理部分

1558

会用 DNS NAPTR , SRV 和 A 实现 SIP 服务器发现

108

实现 SIP 中使用的单播会话的 SDP 提供答案模型

120

实现基本的 NAT 遍历技术 such as STUN, NAT discovery using STUN, TURN的变体

693

实现实时传输协议(RTP)及其配套控制协议RTCP。

687

定义RTP的静态有效内容类型。

48

实现客户端 XMPP 核心

435

实现IM和XMPP客户端的存在(不完整)。

373

实现会话描述协议(SDP)。

162

高级应用程序模块使用其中一些模块并构建其他应用程序或库,如下所述:

ModuleDescriptionLines

实现 SIP 用户代理库,用于注册、呼叫、即时消息和会议

1261

实现 Bamboo/Pastry 分布式哈希表算法的变体

1983

实现客户端库,用来连接到现有的OpenDHT服务

71

p2p

使用 DHT 实现 peer-to-peer 的管道抽象(未完成)

642

p2psip

使用p2p和voip模块实现各种P2P-SIP应用场景(未完成)

285

crypto

实现在dht或p2p中使用的加密算法的抽象(未完成)

261

dhtgui

实现一个用来启动p2p / dht 模块的测试工具,并以圆形来显示节点

427

sipd

使用rfc3261模块实现一个非常简单的SIP注册和代理服务器。(不完全的)

起支持作用的模块

ModuleDescriptionLines

会用方便的方法和运算符实现简单的 XML DOM,用来处理 XML 和 XMLList

420

在运行代码之前,需要自行配置Python的环境,下面的栗子是执行voip.py,这个脚本使用iptel.org服务器执行编写SIP注册、呼叫和即时消息测试

#在download文件夹下

tar -zxvf source-*.tgz

cd p2p-sip/src

export PYTHONPATH=.:external:std:app

python app/voip.py

每个模块都有一个简单的测试用例,作者之后还会上传使用这些基本模块构建的应用程序。

dhtgui.py用于启动P2P模块的测试用户界面,它取决于wxPython的用户界面功能。运行会启动具有DHT圈的用户界面,我们可以在与安全中心附近单击添加新的节点

p2psip.py用于启动P2P-SIP结点

注意:第一个节点启动时需要加 -s ,以成为超级节点,后续启动的节点不要加 -s 以加入此P2Peye.com网络

第一个节点监听SIP端口5062,用 -d 参数可以查看节点之间交换的P2P消息。如果想要跨多个IP网络进行P2P网络,需要重新配置引到节点,因为多播发现通常只能在同一IP下运行

python app/p2psip.py -s #第一个节点作为启动服务器

python app/p2psip.py #其他终端/机器上的后续节点

X-lite v3配置

如果想要使用X-lite测试P2P-SIP,请使用以下X-lite v3配置。 在“帐户”(Account)选项卡下的首选项/选项(preferences/options)中,选择“域代理”(Domain proxy)并将代理地址设置为端口5062上的引导服务器,或者具有正确端口的其他服务器之一,例如127.0.0.1:5062。 在“语音邮件”(Voicemail)选项卡中,取消选中所有内容以避免向P2P-SIP节点发送不必要的语音邮件相关消息。 在“拓扑”(Topology)选项卡的“防火墙遍历”(Firewall traversal)下,“IP address”设置为“使用本地IP地址”(Use local IP address)。 “STUN服务器”设置为“使用指定的服务器”(Use specified server),地址留空。 取消选中所有其他框并将“Use Xtunnels”设置为永不(never)。 在“存在”(Presence)选项卡中,“Mode”是peer-to-peer的。 所有其他值都保留为默认值。 在“高级”(Advanced)选项卡中,确保取消选中“发送SIP保持活动消息”(send SIP keep alive messages)。事实上,唯一的复选框是“Use rport”。 所有其他值都保留为默认值。

python实现自动打电话软件_用Python实现的Internet电话软件(P2P-SIP)开源相关推荐

  1. python脚本自动运行失败_解决Python中定时任务线程无法自动退出的问题

    python的线程有一个类叫Timer可以,用来创建定时任务,但是它的问题是只能运行一次,如果要重复执行,则只能在任务中再调用一次timer,但这样就存在新的问题了,就是在主进程退出后,不能正常退出子 ...

  2. 用python定时自动发微博_用python自动发微博

    --刚刚全部写完了点发布--结果什么都没保存--内心好忧伤. 终极目标是用raspberry pi + camera 捕捉画面,处理图像识别图中有我家主子(猫), 然后自动capture图像,发微博. ...

  3. python图片自动校正流量_利用python西电流量自动查询脚本

    ##code # -*- coding: utf-8 -*- #!/usr/bin/python ''' name: get_pay_info function: 自动获取流量信息 lib: requ ...

  4. python 鼠标 自动点击_利用python模拟鼠标点击自动完成工作,提升你的工作效率!...

    没有什么能比学以致用让学习变得更有动力的了. 不知道大家在工作中有没有一些工作需要重复的点击鼠标,因为会影响到财务统计报表的关系,我们每个月底月初都要修改ERP中的单据日期,单据多的时候光修改就能让你 ...

  5. 用python定时自动发微博_用 Python 自动定时发微博

    其实小帅b已经挺久没有玩微博了,记得上次玩微博还是为了给周杰伦打榜,不过最近心血来潮,觉得俺的微博账号躺着也是躺着,要不就用 Python 做一个自动定时发微博的机器人,让它在上面飘一会. 怎么个飘法 ...

  6. python 股票自动交易助手_哪些 Python 库让你相见恨晚?

    Tenacity. Python重试从此无比简单.这是我博客上的一篇文章,毫不掩饰我对Tenacity这个第三方库的喜爱和赞美之情. --- title: Tenacity--Exception Re ...

  7. python 股票自动交易助手_学习 Python 看这一篇就够了!

    2019.08.05 「Python 技术」公众号发出了第一篇文章,时至今日,已经快一年了.期间我们累积发文 260+ 篇,52 周除去周末我们基本做到了日更,这一路走来磕磕碰碰有太多的不容易,会有为 ...

  8. python写自动答题脚本_编写Python脚本拉取优学院答案

    上个月审计了云班课和优学院的前端代码,实现了强制修改视频进度和获取选择题答案的功能.但是单个发包效率太低了,昨晚开始着手写了一个脚本,早上修改了一下,基本功能写出来了.考虑到风险,这个脚本是获取答案, ...

  9. python微博自动评论转发_「Python」 - 自动删除微博评论

    #!/usr/bin/env python3 # -*- coding: utf-8 -*- import time import re import requests import urllib3 ...

  10. python写抢火车票软件_用 Python 代码自动抢火车票

    市场上很多火车票抢票软件大家应该非常熟悉,但很少有人研究具体是怎么实现的,所以觉得很神秘,其实很简单.下面使用Python模拟抢票程序,给大家揭秘抢票到底是怎么回事. 该代码仅供参考,主要用于大家沟通 ...

最新文章

  1. 新书上市 | 人类程序员,你能不能比三体人更懂量子纠缠?
  2. [JUC-5]ConcurrentHashMap源码分析JDK8
  3. 问题集锦(46-47)
  4. 密码流 PassWord.java
  5. Imageio: 'ffmpeg-win32-v3.2.4.exe' was not found on your computer; downloading it now.
  6. AndroidStudio3.4+Unity2018.3,导出JAR包给UNITY使用
  7. R语言实战-统计分析基础-描述性统计4-psych-describe
  8. django入门三(视图)
  9. 记一次es和mq的netty冲突
  10. React之组件通信
  11. c++已知2点求中垂线_高中化学基于元素周期表的推断题知识总结!(2)
  12. tensorflow函数记录
  13. python中plot函数的属性_Python matplotlib 学习-绘图函数
  14. 文件存储demo,直接存储内容到本地中。
  15. WORD Application.Documents.Open函数返回null的一种解决方法
  16. 嵌入式开发Verilog教程(二)——Verilog HDL设计方法概述
  17. 3dmax渲染器下载VRay4.1渲染器下载安装教程(支持3dmax2013-2019)
  18. 我想向你们推荐一门最好的python课程——CS61A学习笔记(一)
  19. unity 阳光插件_PR插件LUT Mixer2.1.1安装教程
  20. 关于报错ERROR StatusLogger No log4j2 configuration file found. Using default configuration: logging

热门文章

  1. 联想 DXL 系列对象存储
  2. 人民币转换美金的c语言代码大全,C语言 人民币转换代码
  3. linux进入别人电脑,怎么进入别人电脑--局域网【详解】
  4. 大数据智能运维平台方案-2
  5. Vim快捷键-键位图
  6. eclipse 反编译插件 图文
  7. 生成各种随机数据:随机数、随机字符串、随机汉字姓名、随机电话号码、随机日期
  8. idm无法连接到目标服务器的解决办法
  9. Win装linux双系统教程
  10. stm32 上电初始化串口输出一个字节FF问题