Client Gui
Client Gui
import socket
import threading
def receive_messages(sock):
while True:
try:
data = sock.recv(1024).decode()
if not data:
break
print(data)
except:
break
name = input()
s.sendall(name.encode())
while True:
#s.recv(1024).decode()
msg = input("<Me>: ")
if msg.lower() == 'exit':
s.sendall(msg.encode())
break
s.sendall(msg.encode())
if __name__ == '__main__':
start_client()
"""
import socket
import threading
import tkinter as tk
from tkinter import simpledialog, scrolledtext, messagebox
class ChatClient:
def __init__(self, host='192.168.1.4', port=65432):
self.client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
self.host = host
self.port = port
self.root = tk.Tk()
self.root.title("Python Chat Client")
self.root.protocol("WM_DELETE_WINDOW", self.on_close)
self.connect()
threading.Thread(target=self.receive_messages, daemon=True).start()
self.root.mainloop()
def connect(self):
try:
self.client_socket.connect((self.host, self.port))
self.client_socket.recv(1024) # "Enter your name:" prompt
self.client_socket.sendall(self.name.encode())
except Exception as e:
messagebox.showerror("Connection Error", str(e))
self.root.destroy()
def receive_messages(self):
while True:
try:
data = self.client_socket.recv(1024).decode()
split_list = data.split(":", 1)
if self.name in split_list[0]:
split_list[0] = split_list[0].replace(self.name, "Me:")
new_data = split_list[0] + split_list[1]
else:
new_data = data
if not data:
break
self.chat_display.config(state='normal')
self.chat_display.insert(tk.END, new_data + "\n")
self.chat_display.yview(tk.END)
self.chat_display.config(state='disabled')
except:
break
def on_close(self):
try:
self.client_socket.sendall("exit".encode())
except:
pass
self.client_socket.close()
self.root.quit()
if __name__ == '__main__':
ChatClient()