Originariamente inviato da billiejoex
Lo chiudo passandogli una stringa 'exit' dal client tramite un costrutto if.
Effettivamente pero CTRL+C non funziona. Coma mai?
Io mi riferivo al fatto che così come l'ho scritto, una volta eseguito il client
codice:
[maiosyet@alcibiade tmp]$ ./client.py
Welcome, client
Insert text: prova1
...
[programma bloccato]
[Ctrl+C]
Traceback (most recent call last):
File "./client.py", line 22, in ?
main()
File "./client.py", line 15, in main
data = sock.recv(1024)
KeyboardInterrupt
...e il server va in loop infinito.
Questo accade perchè, come ci mostra l'output di ctr+c, il programma client sta ora aspettando uno stream di dati che il client in realtà non gli invierà mai... quindi basta aggiungere una cosa tipo:
codice:
if data == 'help':
print 'help request recived from client'
conn.send('needed help? :]')
else:
print 'Invalid request recived'
conn.send('uh?') #invia comunque uno stream
E funziona perfettamente. Sulla mia box Ctrl+C come hai visto funziona perfettamente... in alternativa per killare un programma python puoi provare EOF (Ctrl+D su Unix, su Win non lo so)