#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2019-08-06 10:38
# @Author : zhouyang
# @File : check_port.py
'''
Appium端口自动检测是否被占用
shutdown(self,flag):禁止在一个Socket上进行数据的接受和发送。利用shutdown()函数使socket双向数据传输变为单向数据传输,
shutdown()需要一个单独的参数,该参数表示了如何关闭socket
参数:0:表示禁止将来读;1:表示禁止将来写;2:表示禁止将来读和写
Appium端口自动释放 端口被占用,自动释放
'''
import socket
import os
def check_port(host,port):
'''检测端口是否被占用'''
#创建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 is already use'%port)
return False
def relase_port(port):
'''释放指定端口'''
#查找指定端口对应的pid
cmd_find='netstat -aon | findstr %s'%port
print(cmd_find)
#返回命令执行后的结果
result=os.popen(cmd_find).read()
print(result)
if str(port) and 'LISTENING' in result:
#获取端口对应的pid进程
i=result.index('LISTENING')
start=i+len('LISTENING')+7
end=result.index('\n')
pid=result[start,end]
#关闭被占用端口的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=4725
# check_port(host,port)
relase_port(port)