zoukankan      html  css  js  c++  java
  • Appium+Python3 端口自动检测和释放

    #!/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('
    ')
            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)
  • 相关阅读:
    每天一个设计模式(2):观察者模式
    每天一个设计模式(1):策略模式
    每天一个设计模式(0):设计模式概述
    常量池、栈、堆的比较
    常量池小结
    Java虚拟机体系结构分析
    Java并发(3):volatile及Java内存模型
    第一题:Big Countries
    22 高级SQL特性
    21 使用游标
  • 原文地址:https://www.cnblogs.com/xiuxiu123456/p/11322431.html
Copyright © 2011-2022 走看看