server.py 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. import socket
  2. from threading import Thread
  3. def up_server():
  4. server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  5. server.bind(('127.0.0.1', 9111))
  6. server.listen(20)
  7. return server
  8. def listen(conn, client_list):
  9. while True:
  10. try:
  11. message = conn.recv(1024).decode()
  12. except:
  13. client_list.remove(conn)
  14. else:
  15. broadcast(message, client_list, conn)
  16. def broadcast(message, client_list, conn):
  17. for client in client_list:
  18. if client != conn:
  19. client.send(message.encode())
  20. print(message)
  21. def main():
  22. server = up_server()
  23. client_list = []
  24. while True:
  25. conn, addr = server.accept()
  26. print(f'Received connection from {conn.fileno()} {conn.getpeername()}')
  27. username = conn.recv(1024).decode()
  28. client_list.append(conn)
  29. join_message = "\n" + username + "join the chat."
  30. broadcast(join_message, client_list, conn)
  31. thread = Thread(target=listen, args=(conn, client_list,))
  32. thread.daemon = True
  33. thread.start()
  34. if __name__ == "__main__":
  35. main()