脚本之家,脚本语言编程技术及教程分享平台!
分类导航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|shell|

服务器之家 - 脚本之家 - Python - 使用python发送sip协议的OPTIONS

使用python发送sip协议的OPTIONS

2023-06-26 16:44Mike_Zhang Python

sip协议提供了OPTIONS请求方法可用于探测对端状态,今天记录下Windows10环境下使用python3.9简单实现sip协议的options功能(udp承载)的过程,并提供示例代码及相关资源下载

环境:Windows10_x64 

Python版本 :3.9.2

 

 

sip协议提供了OPTIONS请求方法可用于探测对端状态,今天记录下Windows10环境下使用python3.9简单实现sip协议的options功能(udp承载)的过程,并提供示例代码及相关资源下载,可从如下渠道获取:

关注微信公众号(聊聊博文,文末可扫码)后回复 20230624 获取。 

 

一、背景描述

sip协议提供了OPTIONS请求方法,可实现如下功能:

1)查询对端能力;

2)检测对端状态(类似ping的功能);

3)NAT会话保活;

4)探测网元数量;

其中,检测对端状态用的比较多,主要用于探测对端服务是否正常。

sip OPTIONS的定义及描述,可参考rfc 3261:

https://www.rfc-editor.org/rfc/rfc3261.html

 

使用python发送sip协议的OPTIONS

二、运行效果

这里演示下使用python发送sip协议的OPTIONS的运行效果,使用FreeSWITCH对接,分为正常探测和异常处理。

1、正常探测 

可以在控制台开启sip日志来观察:

sofia global siptrace on

 

使用python发送sip协议的OPTIONS

2、异常情况

在控制台关闭freeswitch后,查看脚本运行状态,脚本使用了异常处理,可以处理timeout异常。

 

使用python发送sip协议的OPTIONS

运行效果演示视频获取途径:

关注微信公众号(聊聊博文,文末可扫码)后回复 2023062401 获取。 

三、具体实现

这里列举下关键点,并提供示例代码。

 

1、python实现的关键点

1)协议模板

根据rfc定义的OPTIONS格式,生成python中使用的消息模板:

 

OPTIONS sip:{dstSipHost}:{dstSipPort} SIP/2.0
Via: SIP/2.0/UDP {srcSipHost}:{srcSipPort};rport;branch={branchId}
Max-Forwards: 70
From: ;tag={tagId}
To: 
Call-ID: {callId}
CSeq: {cseqNum} OPTIONS
User-Agent: myChecker
Content-Length: 0

2)sequence号

需要注意返回消息的CSeq值是否和发送的一致。

3)探测周期

太快和太慢都不好,具体数值根据应用的实际情况调整。

4)socket需要设置超时

可通过 settimeout 函数进行设置,具体参考python的socket文档。

 

2、示例代码

使用python发送sip协议的OPTIONS

完整示例代码获取途径:

关注微信公众号(聊聊博文,文末可扫码)后回复 20230624 获取。 

 

四、资源下载

 本文涉及源码和文件,可以从如下途径获取:

关注微信公众号(聊聊博文,文末可扫码)后回复 20230624 获取。 

 

使用python发送sip协议的OPTIONS

原文地址:https://www.cnblogs.com/MikeZhang/p/pyOptions20230624.html

延伸 · 阅读

精彩推荐
  • Python如何将自己写的模块上传到pypi

    如何将自己写的模块上传到pypi

    这篇文章主要介绍了如何将自己写的模块上传到pypi,帮助大家更好的理解和学习使用python,感兴趣的朋友可以了解下...

    古明地盆10022021-09-19
  • PythonPython中关于 *args与**args的用法及说明

    Python中关于 *args与**args的用法及说明

    这篇文章主要介绍了Python中关于 *args与**args的用法及说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...

    杨哥学编程6582023-06-06
  • PythonKeras保存模型并载入模型继续训练的实现

    Keras保存模型并载入模型继续训练的实现

    这篇文章主要介绍了Keras保存模型并载入模型继续训练的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要...

    凌逆战10812021-09-06
  • PythonPandas修改DataFrame列名的两种方法实例

    Pandas修改DataFrame列名的两种方法实例

    这篇文章主要给大家介绍了关于Pandas修改DataFrame列名的两种方法,文中通过实例代码介绍的非常详细,对大家学习或者使用Pandas具有一定的参考学习价值,需要...

    小晓酱手记10812022-10-27
  • Python5分钟快速掌握Python定时任务框架的实现

    5分钟快速掌握Python定时任务框架的实现

    这篇文章主要介绍了5分钟快速掌握 Python 定时任务框架,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们...

    Python中文社区8792021-08-29
  • PythonDjango如何实现内容缓存示例详解

    Django如何实现内容缓存示例详解

    缓存对于大家来说应该都不陌生,下面这篇文章主要给大家介绍了关于Django如何实现内容缓存的相关资料,文中通过示例代码介绍的非常详细,对大家的学...

    renpingsheng3762020-12-09
  • Pythonpython实现抖音视频批量下载

    python实现抖音视频批量下载

    这篇文章主要为大家详细介绍了python实现抖音视频批量下载,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    y117562660516142021-03-06
  • Pythonpython切割图片的实现示例

    python切割图片的实现示例

    本文主要介绍了python切割图片的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小...

    菜菜菜三菜5702022-11-08