翼度科技»论坛 编程开发 python 查看内容

使用python发送sip协议的OPTIONS

4

主题

4

帖子

12

积分

新手上路

Rank: 1

积分
12
环境: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的运行效果,使用FreeSWITCH对接,分为正常探测和异常处理。1、正常探测 

可以在控制台开启sip日志来观察:sofia global siptrace on

2、异常情况

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

运行效果演示视频获取途径:关注微信公众号(聊聊博文,文末可扫码)后回复 2023062401 获取。 三、具体实现

这里列举下关键点,并提供示例代码。1、python实现的关键点

1)协议模板根据rfc定义的OPTIONS格式,生成python中使用的消息模板:
  1. OPTIONS sip:{dstSipHost}:{dstSipPort} SIP/2.0
  2. Via: SIP/2.0/UDP {srcSipHost}:{srcSipPort};rport;branch={branchId}
  3. Max-Forwards: 70
  4. From: <sip:{srcSipHost}>;tag={tagId}
  5. To: <sip:{dstSipHost}>
  6. Call-ID: {callId}
  7. CSeq: {cseqNum} OPTIONS
  8. User-Agent: myChecker
  9. Content-Length: 0
复制代码
2)sequence号需要注意返回消息的CSeq值是否和发送的一致。3)探测周期太快和太慢都不好,具体数值根据应用的实际情况调整。4)socket需要设置超时可通过 settimeout 函数进行设置,具体参考python的socket文档。2、示例代码


完整示例代码获取途径:
关注微信公众号(聊聊博文,文末可扫码)后回复 20230624 获取。 
四、资源下载

 本文涉及源码和文件,可以从如下途径获取:关注微信公众号(聊聊博文,文末可扫码)后回复 20230624 获取。 


来源:https://www.cnblogs.com/MikeZhang/p/pyOptions20230624.html
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

举报 回复 使用道具