摘要:对的兴趣也与日俱增,因此决定每周练手使用实现一个测试功能。的机制很强大,使用也很简单,如下代码就是通过简单的交互,实现消息的发送和接收。
最近一段时间一直在学习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
摘要:年月,被正式批准成为信号协议之一,并成为体系结构的一个永久单元。与一样,是用于最主要的信令协议之一。一般来说,要么使用实体话机,要么在系统上安装基于的客户端程序。实体话机硬件成本高,基于的客户端往往兼容性差,无法跨平台,易被杀毒软件查杀。 0 阅前须知 本文并不是教程,只是实现方案 我只是从WEB端考虑这个问题,实际还需要后端sip服务器的配合 jsSIP有个非常不错的在线demo,...
阅读 3134·2021-11-25 09:43
阅读 3147·2021-11-23 09:51
阅读 3489·2019-08-30 13:08
阅读 1497·2019-08-29 12:48
阅读 3568·2019-08-29 12:26
阅读 372·2019-08-28 18:16
阅读 2531·2019-08-26 13:45
阅读 2385·2019-08-26 12:15