मेरे पास एक प्रश्न है। मैं पाइथन का उपयोग करके कुछ समय के लिए कुछ होस्ट के लिए बाइट की निरंतर धाराएं भेजना चाहता हूं (चलो 1 मिनट कहें)।पायथन: बहु थ्रेड में पैकेट कैसे भेजें और फिर थ्रेड खुद को मार दें
यहाँ मेरी कोड अब तक है:
#! /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
कुछ सवाल है, वहाँ 60 सेकंड मतदान के अलावा अन्य time.clock हर बार के बाद एक धागा मरने जाने के लिए एक बेहतर तरीका है? जब मैं इस प्रोग्राम को चलाता हूं, तो यह बाइट्स को सही तरीके से भेजता है, लेकिन जब मैंने टाइप किया तो दूसरा थ्रेड मर जाएगा, भले ही मैं var kill = True सेट करता हूं। मुझे आश्चर्य है कि वह क्यों है? var Killed का दायरा अन्य धागे सही तक पहुंच जाना चाहिए?
धन्यवाद
क्या कोई होस्ट वास्तव में उस पते पर मौजूद है? क्या आप आउटपुट या किसी अन्य प्रोग्राम को कैप्चर करने के लिए नेटकैट का उपयोग कर रहे हैं? – johnny
मुझे लगता है कि 'मारे गए' का दायरा ठीक है। – Jiri