Question: everytime i run my code , I disconect from the server disconect : import socket import threading import tkinter import tkinter.scrolledtext class Client: def _
everytime i run my code I disconect from the server disconect :
import socket
import threading
import tkinter
import tkinter.scrolledtext
class Client:
def initself username, hostname, port:
self.sock socket.socketsocketAFINET, socket.SOCKSTREAM
try:
self.sock.connecthostname port
except Exception as e:
printfCould not connect to server: e
exit
self.username username
self.guidone False
self.running True
# Start threads for GUI and receiving messages
guithread threading.Threadtargetself.guiloop
receivethread threading.Threadtargetself.receive
guithread.start
receivethread.start
def guiloopself:
# Create main window
self.win tkinter.Tk
self.win.configurebg"lightgray"
self.win.titleChat Client"
# Chat label
self.chatlabel tkinter.Labelselfwin, text"Chat:", bg"lightgray", fontArial
self.chatlabel.packpadx pady
# Text area for chat messages
self.textarea tkinter.scrolledtext.ScrolledTextselfwin
self.textarea.packpadx pady
self.textarea.configstate"disabled"
# Message label
self.msglabel tkinter.Labelselfwin, text"Message:", bg"lightgray", fontArial
self.msglabel.packpadx pady
# Text input area
self.inputarea tkinter.Textselfwin, height
self.inputarea.packpadx pady
# Send button
self.sendbutton tkinter.Buttonselfwin, text"Send", commandself.write
self.sendbutton.packpadx pady
self.guidone True
self.win.protocolWMDELETEWINDOW", self.stop
self.win.mainloop
def writeself:
# Send message to server
message fselfusername: selfinputarea.get 'end'strip
self.sock.sendmessageencode
self.inputarea.delete 'end'
def stopself:
# Gracefully stop the client
self.running False
self.win.destroy
self.sock.close
exit
def receiveself:
# Receive messages from server
while self.running:
try:
message self.sock.recvdecode
if message "Username:":
self.sock.sendselfusername.encode
else:
if self.guidone:
self.textarea.configstate"normal"
self.textarea.insertend message
self.textarea.yviewend
self.textarea.configstate"disabled"
except ConnectionAbortedError:
break
except Exception as e:
printfError: e
self.sock.close
break
if namemain:
import sys
if lensysargv:
printUsage: python client.py
else:
username sysargv
hostname sysargv
port intsysargv
Clientusername hostname, port
Step by Step Solution
There are 3 Steps involved in it
1 Expert Approved Answer
Step: 1 Unlock
Question Has Been Solved by an Expert!
Get step-by-step solutions from verified subject matter experts
Step: 2 Unlock
Step: 3 Unlock
