资讯专栏INFORMATION COLUMN

40行代码实现sip注册

weij / 1403人阅读

摘要:对的兴趣也与日俱增,因此决定每周练手使用实现一个测试功能。的机制很强大,使用也很简单,如下代码就是通过简单的交互,实现消息的发送和接收。

最近一段时间一直在学习python,并且用python编写了一个基于sipp工具的自动化测试平台,基本功能良好。对python的兴趣也与日俱增,因此决定每周练手使用python实现一个测试功能。既然对sip熟悉,那就先从sip开始吧。

话说socket真是一个万能的消息收发机制,尤其是对于测试人员来说,学会一门语言,并且把socket玩6,也许会给你的测试工作带来很大的便利。python 的socket机制很强大,使用也很简单,如下代码就是通过简单的socket交互,实现sip消息的发送和接收。

import os
import socket
import time

host = "172.31.225.220"
sport = "5060"

# 创建socket对象
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

# 进行socekt配置,使其支持端口复用,否则发送方绑定5066,则无法使用该端口进行接收
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
s.bind(("172.31.225.112", 5066))

try:
    port = int(sport)
except ValueError:
    port = socket.getservbyname(sport, "udp")
s.connect((host, port))

# 获取当前路径,并读取当前目录下的reg.msg文件内,作为发送的data。
# 本例子中的reg.msg为完整的REGISTER消息
path = os.getcwd()
file = os.path.join(path, "reg.msg")

# 由于python在进行明文读取,默认会将回车换行强制转换为/n,为了防止sip server解析错误,
# 在读取时增加了newline参数,并设置为空,则不进行转换,windows下读取为/r/n
with open(file, "r+", newline="") as sm:
    data = sm.read()
    
# 进行循环收发,需要将reg.msg中的[users]字段替换为1001-1005
for i in range(1001, 1006):
    data = data.replace(r"[users]", str(i))
    print(data)
    s.sendall(data.encode(encoding="utf-8"))
    while 1:
        buf = s.recv(2048)
        print(buf.decode("utf-8"))
        break
    time.sleep(1) 

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/38056.html

相关文章

  • Mac生成APP图标和启动图的脚本

    摘要:下载点我概述之前用的一个批量导出图标和启动图的软件,今天发现收费了,于是自己造了个简单的轮子。扩展在命令行使用命令修改图片尺寸重新定义单个图片尺寸忽略比例修改后图片尺寸为重新定义单个图片尺寸保留比例保留图片比例,宽高不超过。 下载点我 概述 之前用的一个批量导出APP图标和启动图的软件,今天发现收费了,于是自己造了个简单的轮子。 实现 Mac上的sips命令,可以很方便的帮助用户修改图...

    tianhang 评论0 收藏0
  • 堡垒跳板机实现——架构实现

    摘要:关于堡垒机三层架构可以参见前一篇堡垒跳板机实现整体架构登录入口先说第一层,这层的主要功能为检测用户是否有使用堡垒机的权限。 总述 这是关于堡垒机实现的第二篇文章,主要阐述三层架构分别如何实现,包括第一层&第二层的设计与实现,即用户登录堡垒机的入口 & 授权验证, 第三层,如何通过ldap来统一管理服务器账号权限。 关于堡垒机三层架构可以参见前一篇blog:堡垒跳板机实现——整体架构 登...

    hyuan 评论0 收藏0
  • 基于 WebRTC 构建 Web SIP Phone

    摘要:年月,被正式批准成为信号协议之一,并成为体系结构的一个永久单元。与一样,是用于最主要的信令协议之一。一般来说,要么使用实体话机,要么在系统上安装基于的客户端程序。实体话机硬件成本高,基于的客户端往往兼容性差,无法跨平台,易被杀毒软件查杀。 0 阅前须知 本文并不是教程,只是实现方案 我只是从WEB端考虑这个问题,实际还需要后端sip服务器的配合 jsSIP有个非常不错的在线demo,...

    Moxmi 评论0 收藏0
  • macOS Mojave 安装 PHP OCI8/PDO_OCI

    摘要:前面和网上说的都差不多和编译安装类似,去下载如下的安装包可以选择版本,我这里选择的是由于开启了基本上所有的操作都需要在目录下进行解压设置环境变量默认都会解压到目录下网上的资料都是表示这个 前面和网上说的都差不多(和 Linux 编译安装类似),去 Oracle 下载如下的安装包(可以选择版本,我这里选择的是 12.2) instantclient-basic-macos.x64-12...

    mindwind 评论0 收藏0
  • 【猿团专访】| 潜心研究的云视“华山派”,关于技术研发的那些事

    时通讯开发云注册开发者3000多个,平台承载的注册用户大概500W以上;融智服务云产品1.0,3月份上线,短短一个月的试用期内也已经累积了300多家企业用户。良好的市场反馈背后则是云视互动的技术掌门人刘宏仓和技术团队的不懈努力。用他的话来说,云视互动不但是IM通信行业有竞争力的代表,其技术团队更是一个自我修炼,潜心研究的华山派。 云视互动是集消息推送、富媒体聊天、音视频互动、PSTN融合为一体的服...

    HackerShell 评论0 收藏0

发表评论

0条评论

weij

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<