Ich habe ein Multithreading-Programm, das 5 Socket-Objekte instanziiert wie folgt:Python Wie schließe ich einen in einem Thread instanziierten Socket?
class myThread (threading.Thread):
def __init__(self, pid, port_num, restart):
threading.Thread.__init__(self)
self.hostname = '127.0.0.1'
self.pid = pid
self.port_num = port_num
self.ID = pid
self.restart = restart
self.delay = pid*4*1000
def run(self):
try:
s = timer(self.hostname, self.port_num, self.pid)
#print "Socket S run"+str(s)
sendToSocket(self.pid, s, self.t, self.ID)
except Exception as e:
raise
Hier kann die Funktion timer
wird verwendet, um einen Faden auf die folgende Weise zu instantiieren:
def timer(host, port, pid):
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
timed = pid * 4 * 100
s.settimeout(timed)
s.bind((host, port))
s.listen(5)
return s
Ich möchte ein von beenden die Sockets an einem bestimmten Port sagen 5005. Die PID im obigen Beispiel geht von 5001 bis 5005.
Ich möchte eine Steckdose zwischendurch abschalten - sagen wir 5005.
So habe ich diese Methode:
s = socket.socket()
s.connect(('127.0.0.1', 5005))
s.close()
Aber der Sockel wird nicht geschlossen.
Ich muss den obigen Vorgang von einer externen Funktion aufrufen.
Kurz gesagt, wenn ein Socket an Port 5005 gebunden ist, möchte ich die Steckdose schließen und es nicht zur Verfügung, so dass wir eine bekommen würde Port not found exception.
Mögliche Duplikat [Schließen Socket in Python thread] (http://stackoverflow.com/questions/16734534/close-listening-socket-in-python-thread) – Dillanm
Als your'class 'halten MyThread das '.port_num', funktioniert' myThread_instance.s.close() 'nicht? – stovfl