摘要:對的興趣也與日俱增,因此決定每周練手使用實現(xiàn)一個測試功能。的機(jī)制很強(qiáng)大,使用也很簡單,如下代碼就是通過簡單的交互,實現(xiàn)消息的發(fā)送和接收。
最近一段時間一直在學(xué)習(xí)python,并且用python編寫了一個基于sipp工具的自動化測試平臺,基本功能良好。對python的興趣也與日俱增,因此決定每周練手使用python實現(xiàn)一個測試功能。既然對sip熟悉,那就先從sip開始吧。
話說socket真是一個萬能的消息收發(fā)機(jī)制,尤其是對于測試人員來說,學(xué)會一門語言,并且把socket玩6,也許會給你的測試工作帶來很大的便利。python 的socket機(jī)制很強(qiáng)大,使用也很簡單,如下代碼就是通過簡單的socket交互,實現(xiàn)sip消息的發(fā)送和接收。
import os import socket import time host = "172.31.225.220" sport = "5060" # 創(chuàng)建socket對象 s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) # 進(jìn)行socekt配置,使其支持端口復(fù)用,否則發(fā)送方綁定5066,則無法使用該端口進(jìn)行接收 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)) # 獲取當(dāng)前路徑,并讀取當(dāng)前目錄下的reg.msg文件內(nèi),作為發(fā)送的data。 # 本例子中的reg.msg為完整的REGISTER消息 path = os.getcwd() file = os.path.join(path, "reg.msg") # 由于python在進(jìn)行明文讀取,默認(rèn)會將回車換行強(qiáng)制轉(zhuǎn)換為/n,為了防止sip server解析錯誤, # 在讀取時增加了newline參數(shù),并設(shè)置為空,則不進(jìn)行轉(zhuǎn)換,windows下讀取為/r/n with open(file, "r+", newline="") as sm: data = sm.read() # 進(jìn)行循環(huán)收發(fā),需要將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)
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/38056.html
摘要:年月,被正式批準(zhǔn)成為信號協(xié)議之一,并成為體系結(jié)構(gòu)的一個永久單元。與一樣,是用于最主要的信令協(xié)議之一。一般來說,要么使用實體話機(jī),要么在系統(tǒng)上安裝基于的客戶端程序。實體話機(jī)硬件成本高,基于的客戶端往往兼容性差,無法跨平臺,易被殺毒軟件查殺。 0 閱前須知 本文并不是教程,只是實現(xiàn)方案 我只是從WEB端考慮這個問題,實際還需要后端sip服務(wù)器的配合 jsSIP有個非常不錯的在線demo,...
閱讀 3247·2021-11-25 09:43
閱讀 3237·2021-11-23 09:51
閱讀 3543·2019-08-30 13:08
閱讀 1601·2019-08-29 12:48
閱讀 3619·2019-08-29 12:26
閱讀 427·2019-08-28 18:16
閱讀 2594·2019-08-26 13:45
閱讀 2462·2019-08-26 12:15