edv:prg:python:example:einfaches_chat-programm
Einfaches Chat-Programm - Server und Client
Dieses Beispiel habe ich dem Artikel Create a Basic LAN Chat Room with Python3 (https://python.plainenglish.io/create-a-basic-lan-chat-room-with-python-f334776bf70c) entnommen.
Server:
#server.py import socket import threading my_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) PORT = 8000 ADDRESS = "0.0.0.0" broadcast_list = [] my_socket.bind((ADDRESS, PORT)) def accept_loop(): while True: my_socket.listen() client, client_address = my_socket.accept() broadcast_list.append(client) start_listenning_thread(client) def start_listenning_thread(client): client_thread = threading.Thread( target=listen_thread, args=(client,) #the list of argument for the function ) client_thread.start() def listen_thread(client): while True: message = client.recv(1024).decode() if message: print(f"Received message : {message}") broadcast(message) else: print(f"client has been disconnected : {client}") return def broadcast(message): for client in broadcast_list: try: client.send(message.encode()) except: broadcast_list.remove(client) print(f"Client removed : {client}") accept_loop()
Client:
#client.py import socket import threading nickname = input("Choose your nickname : ").strip() while not nickname: nickname = input("Your nickname should not be empty : ").strip() my_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) host = "0.0.0.0" # "127.0.1.1" port = 8000 my_socket.connect((host, port)) def thread_sending(): while True: message_to_send = input() if message_to_send: message_with_nickname = nickname + " : " + message_to_send my_socket.send(message_with_nickname.encode()) def thread_receiving(): while True: message = my_socket.recv(1024).decode() print(message) thread_send = threading.Thread(target=thread_sending) thread_receive = threading.Thread(target=thread_receiving) thread_send.start() thread_receive.start()
Stand: 06.12.2021
— : Jürgen Kreick
EOF
edv/prg/python/example/einfaches_chat-programm.txt · Zuletzt geändert: 2021/12/06 13:30 von 127.0.0.1