シンプルなインタラクティブCMDコードをpython--

cmd_server

インポートソケット
 のインポートは、   サブプロセスの#は、シェルコマンドを実行 
SK = socket.socket()
アドレス =(' 127.0.0.1 '、8000 
sk.bind(アドレス)
sk.listen( 3 印刷' ウェイティング... ' 

しばらく。1 
    コネティカット、ADDR = sk.acceptは()
     しばらく 1。 トライ
            データ = conn.recv(1024) データの不完全過ぎる原因受信
        除く:E AS例外を
             印刷します' 顧客が残した' BREAK 
        IF  ないデータ:BREAKの
        印刷(STR(データ、" UTF-8。" ))

        OBJ = subprocess.Popen(STR(データ、" UTF-8。")、シェル= Trueの場合、STDOUT = サブプロセス。パイプ)
         #1 STDOUT標準出力パイプはメイン処理(パッケージ)などのプロセス移送導管の行為である
        変数に最終の割り当てを取得するために追加できない場合 
        = cmd_result obj.stdout.read()
        result_len =バイト( STR(LEN(cmd_result))、UTF-8 #のint型は直接中間遷移STRによって必要とされるバイトに変換できません
        conn.sendall(result_len)
        conn.recv( 1024) は、分離
        conn.sendall(cmd_result)は
(sk.close)

「」「」 " 
クライアントは、結果を返すようにサーバ側にコマンドを送信し

  、問題を解決するために:の透過場合コマンドの結果を複数回受信するには大きすぎる、次のコマンドは、その結果、実行することができない
  溶液:Len関数を使用して結果をクライアント端末に送信した後、送信の長さを決定し
、次にwhileループは、クライアントによって決定された
  1つのだけ送信:注意intは直接ので、strの過度の使用の必要性バイトに変換することができない一方で、バイトクラスに合格する
  )2. 2つを送信するには、パッケージを固執する可能性がある、あなたは睡眠時間モジュールtime.sleep場合(カットオフする必要があり、その後、プロセスが遅延します
  したがって、プラスのような任意の「閉じた開発」
「'を」

 

 

cmd_clinet:

輸入ソケット

アドレス =(' 127.0.0.1 '、8000 

SK = socket.socket()

sk.connect(アドレス)

しばらく真: =入力(" >>> " の場合 == ' 終了' ブレーク
    SK。送信(バイト(' UTF-8 ' ))
    recv_len = INT(STR(sk.recv(1024)、' UTF-8 ' ))
    sk.send(' OK '用于隔断
    印刷(recv_len)
    データ = バイト()
     しばらく LEN(データ)=!recv_len:
        RECV = sk.recv(1024 
        のデータ + = のrecv
     プリント(STR(データ、' GBK ' ))
sk.close()
 ""」"" 

「」」

 

おすすめ

転載: www.cnblogs.com/zzzi/p/11494539.html