2017-09-12 19 views
2

私はプログラミング上の課題に取り組んでいます。プログラムを起動して開いたソケットポートに接続しようとしました。Pythonの実行可能ファイルを実行してからTCPをプロセスに接続します

問題のプログラムは、ポート2222でリスナーを開きます。文字列を送信すると、それを処理して応答を返して終了します。私の意図は、私が期待している結果を得るために送信する正しいタイプのデータを見つけるまで、これにデータを送信することを自動化することです。

import socket 
import os 

msg = 0x09 
os.system(r"C:/Users/user/Desktop/myfile.exe") 

sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
TCP_IP = '127.0.0.1' 
TCP_PORT = 2222 
sock.connect((TCP_IP, TCP_PORT)) 
sock.send(str(msg)) 
result = sock.recv(1024) 
sock.close 
print result 

スクリプトはexeを起動しますが、接続しません。手動でファイルを開いてスクリプトを実行すると、正常に通信するため、タイミングの問題であると判断しました。私は20秒までの睡眠の遅れを使いましたが、スクリプトはまだハングアップしています。私はこの仕事をするためにどのように進歩する必要があるのか​​不明です。

答えて

1

これは、os.systemは、それが終了値を返すことを終了するプログラムを待機するので、私はサブプロセス `に` os.system`を変更完全に働いたsubprocess

+1

独立スレッド利用を実行するためhere

参照あります.Popen( "C:/Users/user/Desktop/myfile.exe"、stdout = subprocess.PIPE) 'これは私が期待した通りに動作しました – nilats

+0

@nilatsあなたはドキュメントを参照して、作成フラグとstdin/stdout chaneling – Abra001

+0

サブプロセスでは、外部の手段なしにtogatherと通信するスレッドを生成することができます。 – Abra001

関連する問題