SrpskaArchiva

server.py

Jul 10th, 2020
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.31 KB | None | 0 0
  1. import threading
  2. import socket
  3.  
  4. host = '127.0.0.1' # local host
  5. port = 39241 # server port
  6.  
  7.  
  8. server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  9. server.bind((host, port))
  10. server.listen()
  11.  
  12. clients = []
  13. nicknames = []
  14.  
  15. def broadcast(message):
  16.     for client in clients:
  17.         client.send(message)
  18.      
  19. def handle(client):
  20.     while True:
  21.         try:
  22.             message = client.recv(1024)
  23.             broadcast(message)
  24.         except:
  25.             index = clients.index(client)
  26.             clients.remove(client)
  27.             client.close()
  28.             nickname = nicknames[index]
  29.             broadcast(f'{nickname} has left the chat.'.encode('ascii'))
  30.             nicknames.remove(nickname)
  31.             break
  32.  
  33. def receive():
  34.     while True:
  35.         client, address = server.accept()
  36.         print(f"Connected with {str(address)}")
  37.  
  38.         client.send('NICK'.encode('ascii'))
  39.         nickname = client.recv(1024).decode('ascii')
  40.         nicknames.append(nickname)
  41.         clients.append(client)
  42.  
  43.         print(f'Nickname of the client is {nickname}.')
  44.         broadcast(f'{nickname} joined the chat!'.encode('ascii'))
  45.         client.send('Connected to the server.'.encode ('ascii'))
  46.  
  47.         thread = threading.Thread(target=handle, args=(client,))
  48.         thread.start()
  49.  
  50. receive()
Advertisement
Add Comment
Please, Sign In to add comment