【问题标题】:Python Start executable then TCP connect to the processPython 启动可执行文件然后 TCP 连接到进程
【发布时间】:2017-09-12 21:21:39
【问题描述】:

我正在处理一个编程挑战,我需要做的是让 python 启动程序,然后尝试连接到一个开放的 sock 端口以将数据发送到我刚刚启动的程序。

有问题的程序在启动时会在端口 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 秒的睡眠延迟,但脚本仍然挂起。我不确定我需要如何继续才能完成这项工作。

【问题讨论】:

    标签: python tcp socks


    【解决方案1】:

    这是因为os.system 等待程序完成以返回退出值,请参阅here

    对于执行独立线程使用subprocess

    【讨论】:

    • 效果很好,我将os.system 更改为subprocess.Popen("C:/Users/user/Desktop/myfile.exe", stdout=subprocess.PIPE),效果完全符合我的预期
    • @nilats 您可以查阅文档并了解有关创建标志和标准输入/标准输出通道的更多信息
    • 使用子进程,您可以生成无需外部即可进行通信的线程,这意味着您的挑战好运
    猜你喜欢
    • 2017-11-23
    • 2010-10-25
    • 2017-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-09
    • 1970-01-01
    相关资源
    最近更新 更多