您好,登錄后才能下訂單哦!
這期內(nèi)容當(dāng)中小編將會給大家?guī)碛嘘P(guān)使用Python怎么對Appium端口進(jìn)行檢測,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
我們要引用的socket模塊來校驗(yàn)端口是否被占用。
簡單一句話:網(wǎng)絡(luò)上的兩個程序通過一個雙向的通信連接實(shí)現(xiàn)數(shù)據(jù)的交換,這個連接的一端稱為一個socket。建立網(wǎng)絡(luò)通信連接至少要一對端口號(socket)。
socket本質(zhì)是編程接口(API),對TCP/IP的封裝,TCP/IP也要提供可供程序員做網(wǎng)絡(luò)開發(fā)所用的接口,這就是Socket編程接口。
關(guān)于socket的通訊原理,我們可以參考socket通訊原理
關(guān)于socket模塊內(nèi)容,我們可以參考python 的socket模塊文檔
我們上代碼,看看如何檢測端口是否被使用
# -*- coding: utf-8 -*- """ @ auth : carl_DJ @ time : 2020-7-7 """ import socket def check_port(host,port): "檢查端口是否被占用" #創(chuàng)建socket對象 s = socket.socket(socket.AF_INET,socket.SOCK_STREAM) try: s.connect((host,port)) s.shutdown(2) #表示將來禁止讀和寫 except OSError as msg: print("port %s is available !" %port) print(msg) return True else: print("port %s already in use! " %port) return False if __name__ == '__main__': host = '127.0.0.1' prot = 4723 check_port(host,prot)
這里注意一點(diǎn):
shutdown(self,flag):禁止在一個Socket上進(jìn)行數(shù)據(jù)的接收和發(fā)送。
利用shutdown()函數(shù),使雙向數(shù)據(jù)傳輸變?yōu)閱蜗驍?shù)據(jù)傳輸。
參數(shù):
>0表示禁止將來讀;
>1表示禁止將來寫
>2表示禁止將來讀和寫。
我們來看看代碼執(zhí)行結(jié)果:
如下圖狀態(tài),說明服務(wù)器沒有開啟這個端口服務(wù),所以這個端口是可以使用!
如果端口被占用,我們就需要釋放它。
那如何釋放端口呢,?
有兩種方法:
1.cmd窗口 釋放 端口;
2.python代碼釋放端口。
1、先查找我們要需要的端口號
netstat -aon | findstr "5037"
2、通過端口號,查找pid,然后殺死進(jìn)程
taskkill -f -pid 18028
那如果在python里面,如何實(shí)現(xiàn)呢?
我們看代碼:
# -*- coding: utf-8 -*- """ @ auth : carl_DJ @ time : 2020-7-7 """ import os def release_port(port): "釋放指定端口" #查找端口對應(yīng)的pid cmd_find = 'netstat -ano | findstr %s' %port print(cmd_find) #返回命令執(zhí)行結(jié)果 result = os.popen(cmd_find).read() print(result) if str(port) and 'LISTENING' in result: #獲取端口對應(yīng)的pid進(jìn)程 i = result.index('LISTENING') # 'LISTENING'與端口號之間相隔7個空格 start = i + len('LISTENING') +7 end = result.index('\n') pid = result[start:end] #關(guān)閉被占用端口的pid cmd_kill = 'taskkill -f -pid %s' %pid print(cmd_kill) os.popen(cmd_kill) else: print('port %s is available !' %port) if __name__ == '__main__': host = '127.0.0.1' port = 4723 release_port(port)
我們來瞅瞅,運(yùn)行結(jié)果是啥:
上述就是小編為大家分享的使用Python怎么對Appium端口進(jìn)行檢測了,如果剛好有類似的疑惑,不妨參照上述分析進(jìn)行理解。如果想知道更多相關(guān)知識,歡迎關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。