Je travaille sur un défi de programmation et ce que je dois faire est d'avoir python lancer le programme tente alors de se connecter à un port de chaussette ouverte pour envoyer des données au programme que je viens de lancer.exécutable Démarrer Python puis TCP se connecter au processus
Le programme en question lors de son lancement ouvre un écouteur sur le port 2222, lorsque vous envoyez une chaîne qu'il traitera et donner une réponse et la sortie. Mon intention est d'automatiser l'envoi de données jusqu'à ce que je trouve le bon type de données à envoyer pour obtenir le résultat que j'attends.
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
Le script lancera l'exe mais ne se connectera pas. Si j'ouvre le fichier manuellement, puis exécute le script, il communique avec succès, donc j'ai supposé qu'il s'agissait d'un problème de synchronisation. J'ai utilisé des retards de sommeil de jusqu'à 20 et le script se bloque toujours. Je ne sais pas comment je dois procéder pour être en mesure de faire ce travail.
Cela a parfaitement fonctionné, j'ai changé le '' os.system' de sous-processus .Popen (« C: /Users/user/Desktop/myfile.exe », stdout = subprocess.PIPE) 'et cela a fonctionné exactement comme je m'y attendais – nilats
@nilats vous pouvez consulter les documents et en apprendre davantage sur les drapeaux de création et stdin/stdout changing – Abra001
avec sous-processus, vous pouvez générer des discussions qui communiquent togather sans moyens externes meilleure chance avec votre défi – Abra001