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() ""」"" 「」」