Ich habe eine Frage. Ich würde gerne eine kontinuierliche Byteströme an einen Host für eine bestimmte Zeit senden (sagen wir 1 Minute) mit Python.Python: wie Pakete in Multi-Thread zu senden und dann der Thread sich selbst töten
Hier ist mein Code so weit:
#! /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
Wenige Frage, gibt es einen besseren Weg, um einen Faden stirbt nach 60 Sekunden außer Abfrage des time.clock jedes Mal zu lassen? Wenn ich dieses Programm ausführen, sendet es die Bytes korrekt, aber wenn ich getippt habe, wird der andere Thread nicht sterben, obwohl ich die var killed = True gesetzt habe. Ich frage mich, warum ist das so? der Umfang von var Killed sollte den anderen Thread richtig erreichen? Stellen Sie sicher,
Dank
Existiert tatsächlich ein Host unter dieser Adresse? Verwenden Sie Netcat, um die Ausgabe oder ein anderes Programm zu erfassen? – johnny
Ich denke, dass der Umfang von "getötet" in Ordnung ist. – Jiri