Mam pytanie. Chciałbym wysłać ciągłe strumienie bajtów do jakiegoś hosta przez pewien czas (powiedzmy 1 minutę) używając Pythona.python: jak wysłać pakiety w wielu wątkach, a następnie sam zabić wątek
Oto mój kod do tej pory:
#! /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
Niewiele pytanie, czy istnieje lepszy sposób, aby pozwolić kostką gwintu po 60 sekundach innych niż wywoływania time.clock za każdym razem? Gdy uruchomię ten program, wysyła on bajty poprawnie, ale kiedy wypiszę klawisz, drugi wątek nie zginie, nawet jeśli ustawiłem var zabity = True. Zastanawiam się, dlaczego tak jest? zakres var Killed powinien dotrzeć do drugiego wątku w prawo?
Dzięki
Czy host rzeczywiście istnieje pod tym adresem? Czy używasz Netcat do przechwytywania danych wyjściowych lub jakiegoś innego programu? – johnny
Myślę, że zakres "zabitych" jest w porządku. – Jiri