# ! / Usr / bin / Python окр # - * - Coding:. 8 UTF - - * - # @time: 2019-08-06 10:38 # @author: zhouyang # @file: check_port.py '' ' порт Appium автоматическое определение занимает выключение (самостоятельно, флаг): запрещают получать и отправлять данные в сокет. Используя выключение () функция позволяет передачи двунаправленных данных сокет становится однонаправленным передачи данных, отключение () требует один параметр , который указывает , как близко гнездо параметры: 0: Чтение запрещено в будущем; 1: представляет собой запись запрещают будущее; 2 : что запрещает будущее чтение и запись порта Appium автоматически освобождает порт занят, автоматически освобождается «» « Импорт сокета Импорт ОС DEF check_port (хост, порт): » «» , чтобы обнаружить ли занят порт «» ' # создать объект гнездо S = разъем .socket (socket.AF_INET, розетка. : S.connect ((Host, Port)) s.shutdown ( 2 ) , кроме информации OSError AS MSG: Печать ( ' Порт доступна S% ' % Port) Печать (MSG) вернуться Правда еще : Печать ( " Порт уже S% использовать ' % порт) возврат ложного DEF relase_port (порт): ' '' , чтобы освободить указанный порт '' ' # Найти Pid указанного порта , соответствующим cmd_find = ' в NETSTAT -aon | Findstr% S '% Порт печати (cmd_find) # возвращает результат выполнения команды Результат = os.popen (cmd_find) .read () Печать (Result) IF STR (порт) и ' СЛУШАТЬ ' в Result: # Получить PID процесса , соответствующего порта я = result.index ( ' ПРОСлУШИВАНИЕ ' ) Start = I + LEN ( ' СЛУШАЯ ' ) +7 End = result.index ( ' \ n- ' ) PID = Результат [Start, End] # закрыть порт занят ВЗОМТ cmd_kill = ' Taskkill -f -pid% s ' % PID печати (cmd_kill) os.popen (cmd_kill) еще : печать ( ' Порт% s доступен ' % порта) , если __name__ == ' __main__ ' : хост = ' 127,0. 0,1 ' порт = 4725 # check_port (хост, порт) relase_port (порт)