Improve <ctrl+c> interruption

Add clean server disconnection with «quit» keyword

Fix this 2 bugs:
- show message on server when client use <ctrl+c>
- crash after 2 <ctrl+c> in client
This commit is contained in:
Fred Z 2018-02-28 13:50:46 +01:00
parent 8951d7dcd5
commit c863a2c727
2 changed files with 7 additions and 4 deletions

View File

@ -4,8 +4,8 @@
- [x] ~~clean client exit with <ctrl-c>~~
- [x] ~~clean server exit with <ctrl-c>~~
- [x] ~~broadcasting messages to all client connected~~
- [ ] show message on server when client use <ctrl+c>
- [ ] crash after 2 <ctrl+c> in client
- [x] ~~show message on server when client use <ctrl+c>~~
- [x] ~~crash after 2 <ctrl+c> in client~~
- [ ] sending welcome message only at 1st client connection
- [ ] asking/using client-nickname
- [ ] client freeze when sending empty string or spaces

View File

@ -20,7 +20,7 @@ PORT = int(sys.argv[2])
BUFFER = 1024
MSG_SERVER_CONNECTED = "Serveur connecté @{}:{}"
MSG_CLOSE_CONNECTION = "\nConnexion vers [{}:{}] fermée"
MSG_CLOSE_CONNECTION = "Connexion vers [{}:{}] fermée"
def prompt():
sys.stdout.write('\n[me]:')
@ -28,7 +28,10 @@ def prompt():
def handler(signum, frame):
""" Catch <ctrl+c> signal for clean stop"""
print(MSG_CLOSE_CONNECTION.format(HOST, PORT))
print()
print(MSG_CLOSE_CONNECTION.format(*(SERVER_CONNECTION.getpeername())))
SERVER_CONNECTION.send(b"QUIT")
SERVER_CONNECTION.close()
sys.exit(0)
signal.signal(signal.SIGINT, handler)