Skip to content
Snippets Groups Projects
Commit 18d9dc1f authored by OUDJOUDI Mazis's avatar OUDJOUDI Mazis
Browse files

Upload New File

parent a328ae01
Branches
No related tags found
No related merge requests found
client.py 0 → 100644
import socket
import threading
import tkinter as tk
from tkinter import messagebox
def receive_messages():
while True:
try:
message = client_socket.recv(1024).decode()
if message.startswith('[CONNEXION]'):
user = message.split(':')[1]
users_connected.append(user)
update_users_list()
communication_box.insert(tk.END, f"[{user}]: {user} vient d'arriver sur le chat\n")
elif message.startswith('[DECONNEXION]'):
user = message.split(':')[1]
users_connected.remove(user)
update_users_list()
else:
message_parts = message.split(':', 1) # Diviser en deux parties au maximum
if len(message_parts) == 2:
user, msg = message_parts
communication_box.insert(tk.END, f"[{user}]: {msg}\n")
else:
# Le message n'est pas au bon format
print("Le message reçu n'est pas au bon format :", message)
except ConnectionResetError:
messagebox.showinfo("Information", "Connexion au serveur perdue.")
break
def send_message(event=None):
message = message_entry.get()
message = f"[{username}]: {message}"
client_socket.send(message.encode())
message_entry.delete(0, tk.END)
if message == '[QUIT]':
client_socket.close()
root.quit()
def disconnect():
client_socket.send('[QUIT]'.encode())
def connect_to_server():
global client_socket, username
server_ip = server_ip_entry.get()
server_port = int(server_port_entry.get())
username = username_entry.get()
try:
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client_socket.connect((server_ip, server_port))
client_socket.send(username.encode())
send_button.focus_set()
receive_thread = threading.Thread(target=receive_messages)
receive_thread.start()
communication_box.insert(tk.END, f"[{username}]: Vous êtes connecté au chat\n")
except ConnectionRefusedError:
messagebox.showinfo("Information", "Impossible de se connecter au serveur. Vérifiez l'adresse IP et le port.")
def on_closing():
if messagebox.askokcancel("Quitter", "Êtes-vous sûr de vouloir quitter ?"):
disconnect()
root.destroy()
broadcast_message(f"[DECONNEXION]:{username}")
def update_users_list():
users_list.delete(0, tk.END)
for user in users_connected:
users_list.insert(tk.END, user)
root = tk.Tk()
root.title("Client")
root.protocol("WM_DELETE_WINDOW", on_closing)
connection_frame = tk.Frame(root)
connection_frame.pack(padx=10, pady=10)
server_ip_label = tk.Label(connection_frame, text="Adresse IP du serveur:")
server_ip_label.grid(row=0, column=0, sticky=tk.W)
server_ip_entry = tk.Entry(connection_frame)
server_ip_entry.grid(row=0, column=1, padx=5)
server_port_label = tk.Label(connection_frame, text="Port du serveur:")
server_port_label.grid(row=1, column=0, sticky=tk.W)
server_port_entry = tk.Entry(connection_frame)
server_port_entry.grid(row=1, column=1, padx=5)
username_label = tk.Label(connection_frame, text="Nom d'utilisateur:")
username_label.grid(row=2, column=0, sticky=tk.W)
username_entry = tk.Entry(connection_frame)
username_entry.grid(row=2, column=1, padx=5)
connect_button = tk.Button(connection_frame, text="Se connecter", command=connect_to_server)
connect_button.grid(row=3, column=0, pady=10)
disconnect_button = tk.Button(connection_frame, text="Déconnecter", command=on_closing)
disconnect_button.grid(row=3, column=1, pady=10)
communication_frame = tk.Frame(root)
communication_frame.pack(padx=10, pady=10)
communication_label = tk.Label(communication_frame, text="Communication:")
communication_label.pack()
communication_box = tk.Text(communication_frame, height=10, width=50)
communication_box.pack()
message_entry = tk.Entry(root, width=40)
message_entry.pack(padx=10, pady=5)
send_button = tk.Button(root, text="Envoyer", command=send_message)
send_button.pack(padx=10, pady=5)
users_frame = tk.Frame(root)
users_frame.pack(padx=10, pady=10)
users_label = tk.Label(users_frame, text="Utilisateurs connectés:")
users_label.pack()
users_list = tk.Listbox(users_frame, height=5, width=30)
users_list.pack()
root.mainloop()
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment