====== 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\\
--- //[[feedback.jk-wiki@kreick.de|: Jürgen Kreick]]//
EOF