J'ai une question. Je voudrais envoyer un flux continu d'octets à un hôte pendant un certain temps (disons 1 minute) en utilisant python.python: comment envoyer des paquets dans un multi-thread, puis le fil se tue
Voici mon code à ce jour:
#! /usr/bin/env python
import socket
import thread
import time
IP = "192.168.0.2"
PADDING = "a" * 1000 #assume the MTU is slighly above 1000
DATA = PADDING + "this is sentence number = "
PORT = 14444
killed = False
test_time = 60 #60 seconds of testing
def send_data():
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((IP, PORT))
count = 1
starttime = time.clock()
while elapsed < test_time:
sent = s.send(DATA + str(count) + "\n")
if sent == 0: break # assume that if nothing is sent -> connection died
count = count+1
elapsed = time.clock() - starttime
if killed:
break
s.close()
print str(count) + " has been sent"
print "to quit type quit"
thread.start_new_thread(send_data,())
while True:
var = raw_input("Enter something: ")
if var == "quit":
killed = True
Peu question, est-il une meilleure façon de laisser mourir de fil au bout de 60 secondes autres que le vote time.clock chaque fois? Quand j'exécute ce programme, il envoie les octets correctement, mais quand je tape, l'autre thread ne meurt pas, même si je mets la var kill = True. Je me demande pourquoi est-ce? la portée de la var Killed devrait atteindre l'autre fil droit?
Merci
Un hôte existe-t-il réellement à cette adresse? Utilisez-vous Netcat pour capturer la sortie ou un autre programme? – johnny
Je pense que la portée de 'tué' est ok. – Jiri