0

私のセットアップは次のとおりです。

Python 2.6 (商用アプリに組み込まれている) は、サブプロセスを使用して (外部) python 2.7 で外部スクリプトを起動します。
次に、外部スクリプトは socket モジュールを使用して、python コマンドを組み込み python に送り返します。
ソケットは次のコードで初期化されます。

self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)  

そして、次を使用してコマンドを送信します。

self.sock.send("print ('hello, world!')")

これは現時点では非常にうまく機能しています。必要なすべてのコマンドを送信し、プログラムを適切に制御できます。

私の質問:ソケットを介して情報を送信するように要求するにはどうすればよいですか?
たとえば、プログラムに文字列のリストを提供するように依頼する必要があります。しかし、埋め込まれた python が開いているソケットを介してデータを返す方法を理解するのに苦労していますか?
ありがとう!

4

1 に答える 1

1

いつでも双方向のソケット通信が可能です。

外部Pythonが何かを送信するときは、引数の1つが何かを要求していることを指定できるタプルを常に送信します。

例を挙げましょう、

双方向ソケット通信をセットアップします(単純なクライアントサーバーモデル-同期または非同期は、プロジェクト/アプリが必要とするものによって異なります)。

2.7はこのようなタプルを送信します-

(<command>, 1)

送信した(機能していると言った)コマンドの出力が必要であることを示す1は、2.7に返送されます。

したがって、2.6がタプルを受信すると、タプルの0番目の位置は常に送信しようとしているコマンドを表し、1番目の位置は送り返し引数を表します。

単純なif-else条件を使用して、それが1であるかどうかを確認し、結果を2.7に送り返すことができます。そうでない場合はそうではありません。

かなり単純なロジック。

于 2012-06-21T06:58:47.100 に答える