Untitled
plain_text
11 days ago
2.4 kB
3
Indexable
Never
import socket import tkinter as tk import threading from tkinter import messagebox HOST = '0.0.0.0' PORT = 65432 class ChatServerGUI: def __init__(self, master): self.master = master self.master.title("Chat Application") self.messages_frame = tk.Frame(self.master) self.scrollbar = tk.Scrollbar(self.messages_frame) self.msg_list = tk.Listbox(self.messages_frame, height=20, width=50, yscrollcommand=self.scrollbar.set) self.scrollbar.pack(side=tk.RIGHT, fill=tk.BOTH) self.msg_list.pack(side=tk.LEFT, fill=tk.BOTH, expand=True) self.messages_frame.pack(pady=10, padx=10) # Label, Entry, and Button for sending messages self.target_ip_label = tk.Label(self.master, text="Send to IP:") self.target_ip_label.pack(pady=5, padx=10) self.target_ip_entry = tk.Entry(self.master) self.target_ip_entry.pack(pady=5, padx=20, fill=tk.X) self.message_label = tk.Label(self.master, text="Message:") self.message_label.pack(pady=5, padx=10) self.message_entry = tk.Entry(self.master) self.message_entry.pack(pady=5, padx=20, fill=tk.X) self.send_button = tk.Button(self.master, text="Send", command=self.send_message) self.send_button.pack(pady=10) self.start_server_thread = threading.Thread(target=self.start_server) self.start_server_thread.start() def start_server(self): with socket.socket(socket.AF_INET, socket.SOCK_DGRAM) as s: s.bind((HOST, PORT)) while True: data, addr = s.recvfrom(1024) message = f"{addr[0]}: {data.decode()}" self.msg_list.insert(tk.END, message) def send_message(self): target_ip = self.target_ip_entry.get().strip() message = self.message_entry.get().strip() if not target_ip or not message: messagebox.showerror("Error", "Both IP and message fields should be filled!") return try: with socket.socket(socket.AF_INET, socket.SOCK_DGRAM) as s: s.sendto(message.encode(), (target_ip, PORT)) self.msg_list.insert(tk.END, f"You to {target_ip}: {message}") except Exception as e: messagebox.showerror("Error", f"Failed to send the message: {e}") if __name__ == "__main__": root = tk.Tk() gui = ChatServerGUI(root) root.mainloop()