How to build a simple Chat app based on TCP sockets
by QUBIT_MATRIX - Sunday September 8, 2024 at 11:45 PM
#1
client.py:
import tkinter as tk from tkinter import messagebox, filedialog from easysockets import ClientSocket import threading class App:     def __init__(self, root):         self.root = root         root.title("Chat")         self.frame1 = tk.Frame(self.root)         self.frame1.pack(side=tk.TOP, fill=tk.BOTH, expand=True)         self.frame2 = tk.Frame(self.root)         self.frame2.pack(side=tk.BOTTOM, fill=tk.BOTH, expand=True)         self.chat_text = tk.Text(master=self.frame1, height=20, width=50)         self.chat_text.pack(side=tk.TOP, fill=tk.BOTH, expand=True)         self.message_entry = tk.Entry(master=self.frame2, width=50)         self.message_entry.bind("<Return>", self.send_message)         self.message_entry.pack(side=tk.LEFT, fill=tk.X, expand=True)         self.send_button = tk.Button(master=self.frame2, text=">", command=self.send_message)         self.send_button.pack(side=tk.RIGHT, fill=tk.BOTH)         try:             self.client = ClientSocket()             self.connection = self.client.connect(host="localhost", port=9999)             self.receive_thread = threading.Thread(target=self.receive_message)             self.receive_thread.start()         except ConnectionRefusedError:             messagebox.showerror("Error", "Could not connect to server")             quit()             def send_message(self, event=None):         message = self.message_entry.get()         if not message:             return         self.chat_text.insert(tk.END, f"Me: {message}\n")         self.message_entry.delete(0, tk.END)         self.connection.send(message.encode())     def receive_message(self):         while True:             message = str(self.connection.receive().decode())             self.chat_text.insert(tk.END, f"Them: {message[2:-1]}\n") root = tk.Tk() app = App(root) root.mainloop()

server.py:
from easysockets import ServerSocket, Connection clients = [] data = None def handle_client(connection: Connection) -> None:     clients.append(connection)     print("Client connected")     print(clients)     try:         while True:             data = connection.receive()             if not data:                 break             for client in clients:                 if client == connection:                     continue                 client.send(str(data).encode())                 print("sending to client")             print("Received:", data.decode())     finally:         clients.remove(connection)         print("Client disconnected") socket = ServerSocket(     client_handler=handle_client, ) socket.listen(host="0.0.0.0", port=9999)

Feel free to use.
Reply


Possibly Related Threads…
Thread Author Replies Views Last Post
  How to build GTA V from source depodaapre 101 14,732 01-30-2026, 11:10 PM
Last Post: KrunchyChick3n
  Web App Hackmaster: A Journey Through Exploits and Protections DragonWarrior 1 431 09-08-2024, 04:19 PM
Last Post: jxnclzlhack
  Arayavart Complete Tutorial of Shopify App Development DragonWarrior 2 784 04-04-2024, 07:31 PM
Last Post: jokerb4ck4you



 Users browsing this thread: 1 Guest(s)