123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- import socket
- from threading import Thread
- def up_server():
- server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
- server.bind(('127.0.0.1', 9111))
- server.listen(20)
- return server
- def listen(conn, client_list):
- while True:
- try:
- message = conn.recv(1024).decode()
- except:
- client_list.remove(conn)
- else:
- broadcast(message, client_list, conn)
- def broadcast(message, client_list, conn):
- for client in client_list:
- if client != conn:
- client.send(message.encode())
- print(message)
- def main():
- server = up_server()
- client_list = []
- while True:
- conn, addr = server.accept()
- print(f'Received connection from {conn.fileno()} {conn.getpeername()}')
- username = conn.recv(1024).decode()
- client_list.append(conn)
- join_message = "\n" + username + "join the chat."
- broadcast(join_message, client_list, conn)
- thread = Thread(target=listen, args=(conn, client_list,))
- thread.daemon = True
- thread.start()
- if __name__ == "__main__":
- main()
|