摘要:對的興趣也與日俱增,因此決定每周練手使用實現一個測試功能。的機制很強大,使用也很簡單,如下代碼就是通過簡單的交互,實現消息的發送和接收。
最近一段時間一直在學習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)
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/38056.html
摘要:年月,被正式批準成為信號協議之一,并成為體系結構的一個永久單元。與一樣,是用于最主要的信令協議之一。一般來說,要么使用實體話機,要么在系統上安裝基于的客戶端程序。實體話機硬件成本高,基于的客戶端往往兼容性差,無法跨平臺,易被殺毒軟件查殺。 0 閱前須知 本文并不是教程,只是實現方案 我只是從WEB端考慮這個問題,實際還需要后端sip服務器的配合 jsSIP有個非常不錯的在線demo,...
閱讀 3200·2021-11-25 09:43
閱讀 3206·2021-11-23 09:51
閱讀 3518·2019-08-30 13:08
閱讀 1568·2019-08-29 12:48
閱讀 3594·2019-08-29 12:26
閱讀 396·2019-08-28 18:16
閱讀 2561·2019-08-26 13:45
閱讀 2428·2019-08-26 12:15