Ik ben op het moment bezig met een klein server-client programmatje met een Tkinter GUI. Wanneer ik de applicatie start wordt er een socket geopend word waarop geluisterd word naar clienten. Om de server en de GUI tegelijk te laten draaien maak ik gebruik van threads om het luisteren naar clienten niet het programma te laten blokkeren.
Ik wil nu dat wanneer ik de GUI afsluit de server-thread beeindigd wordt zodat de socket weer vrijgemaakt word maar ik heb geen idee hoe ik dit moet doen.
De server-thread wordt binnen de gui class gestart op de volgende manier
Dit wordt er dan uitgevoerd:
Enig idee hoe ik de serverthread kan stoppen?
Ik wil nu dat wanneer ik de GUI afsluit de server-thread beeindigd wordt zodat de socket weer vrijgemaakt word maar ik heb geen idee hoe ik dit moet doen.
De server-thread wordt binnen de gui class gestart op de volgende manier
Python:
1
2
3
| (...) serverlib.connectionThread().start() (...) |
Dit wordt er dan uitgevoerd:
Python:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
| class connectionThread(threading.Thread): # the thread for connecting to server def __init__(self): threading.Thread.__init__(self) def run(self): ipadr = socket.gethostbyname_ex(socket.gethostname()) ipadr = self.ipadr[2][0] .port = 9000 try: sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) except socket.error: print "Socketerror: Can't open socket" sock.bind((self.ipadr, self.port)) sock.listen(1) print "server started" clientsocket, clientadress = sock.accept() print "Verbinding vanaf: "+clientadress[0] while 1: data = clientsocket.recv(12) print data[:10] sock.close() |
Enig idee hoe ik de serverthread kan stoppen?