#!は/ usr / binに/ PythonのENV #- * -コーディング:UTF-8 - * - 。 #@time:2019年8月6日10:38 #1 @author:zhouyang #1 @file:check_port.py '' ' Appiumポート自動検出が占有され 、シャットダウン(自己、フラグ):受信とソケットにデータを送信は禁止されています。シャットダウンを使用して()関数は、双方向データ転送ソケットは一方向データ送信となることができ (シャットダウン)どれだけ近いかソケット示す単一のパラメータが必要 なパラメータを:0:将来禁止読む; 1:将来禁止書き込みを表し、2 :それは、将来の読み取りを禁止し、書き込み Appiumポートは自動的にポートが占有されているリリース、自動的に解除 「」「 インポートソケット インポートOSの DEFのcheck_port(ホスト、ポート): 」「」ポートが占有されているかどうかを検出するために、'「」 #はソケットオブジェクトの作成 S = ソケット.socket(はsocket.AF_INET、ソケット。 : S.connect((ホスト、ポート)) s.shutdown( 2 ) を除くMSG AS OSErrorの: 印刷(' 利用可能なポートは、S%IS '%ポート) 印刷(MSG) を返す真の 他: 印刷(" ポートは既にS%をIS使用'%の)ポート を返す偽 DEFのrelase_port(ポート): ' '' 指定したポート解放するために'' ' #は、対応するPID指定されたポートを探す cmd_find = ' netstatの-aonを|はfindstr%のS "%ポート 印刷(cmd_find)は、 #は、コマンドの実行結果を返す 結果= os.popen、(cmd_find).read() 印刷(結果を) IF STR(ポート)と ' LISTENING ' で結果: #はポートに対応したプロセスのpidを取得します。 I = (result.index ' LISTENING ' ) スタート = Iがlen(+ ' リスニング' 7) エンド = result.index(' \ N- ' ) のpid = 結果[スタート、終了] #は、ポートは、PIDを占領閉じます 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(ポート)