Local chat uygulamam çalışmıyor

lew4k

Hectopat
Katılım
3 Mayıs 2022
Mesajlar
51
Daha fazla  
Cinsiyet
Erkek
Kod:
Server kodu:
From socket import AF_INET, socket, SOCK_STREAM
From threading import Thread
Clients = {}
Address = {}
HOST = "127.0.0.1"
PORT = 23456
BUFFERSIZE = 1024
ADDR = (HOST, PORT)
SERVER = socket(AF_INET, SOCK_STREAM)
SERVER. Bind(ADDR)
Def yayin(msg, kisi=""):
 For yayin in clients:
 Yayin. Send(bytes(kisi,"utf8")+msg)

Def gelen_mesaj():
 While True:
 Client, client_address = SERVER.accept()
 Print(F"{client_address} bağlandi")
 Client. Send(bytes("benim chat uygulamam \n","utf8"))
 Client. Send(bytes("adinizi giriniz:","utf8"))
 Address[client] = client_address
 Thread(target=baglan_clien,args=(client,)).start()

Def baglan_clien(Client):
 İsim = Client. Recv(BUFFERSIZE).decode("utf8")
 Hoş geldin = "hoş geldin %s! Cikmak icin {cikis} yaziniz"%isim
 Client. Send(bytes(hoş geldin,"utf8"))
 Msg = F"{isim} chat kanalina bağlandi"
 Yayin(bytes(msg,"utf8"))
 Clients[client] = isim
 While True:
 Msg = Client. Recv(BUFFERSIZE)
 İf msg!= bytes("{cikis}","utf8"):
 Yayin(msg, isim + ":")
 Else:
 Client. Send(bytes("{cikis}","utf8"))
 client.close()
 Del clients[client]
 Yayin(bytes(F"{isim} yayin kanalindan çikis yapti","utf8"))
 Break
İf __name__ == "__main__":
 SERVER. Listen(10)
 Print("bağlanti bekleniyor...")
 ACCEPT_THERAD = Thread(target = gelen_mesaj)
 ACCEPT_THERAD.start()
 ACCEPT_THERAD.join()
 SERVER.close()
Client kodu:
From socket import AF_INET, socket, SOCK_STREAM
From threading import Thread
İmport Tkinter
HOST = "127.0.0.1"
PORT = 23456
BUFFERSIZE = 1024
ADDR = (HOST, PORT)
Client_socket = socket(AF_INET, SOCK_STREAM)
Client_socket. Connect(ADDR)
Def gelen_mesaj():
 While True:
 Try:
 Msg = client_socket. Recv(BUFFERSIZE).decode("utf8")
 Mesaj_listesi. İnsert(Tkinter. END, msg)
 Except:
 Break
Def gonder(Event = None):
 Msg = mesajim.get()
 Mesajim. Set("")
 Client_socket. Send(bytes(msg,"utf8"))
 İf msg == "{cikis}":
 client_socket.close()
 app.quit()
Def cikis_durumu():
 Mesajim. Set("{cikis}")
 gonder()
App = tkinter.Tk()
App. Title("chat uygulamasi")
Mesaj_alani = Tkinter. Frame(App)
Mesajim = tkinter.StringVar()
Mesajim. Set("mesaj gir")
Scrollbar = Tkinter. Scrollbar(mesaj_alani)
Mesaj_listesi = Tkinter. Listbox(mesaj_alani, height = 20, width = 70, yscrollcommand = scrollbar. Set)
Mesaj_listesi. See("end")
scrollbar.pack()
Gonder_buton = Tkinter. Button(App, text="gonder",command=gonder())
App. Protocol("WM_DELETE_WINDOW",cikis_durumu)
İf not PORT:
 PORT = 23456
Else:
 PORT = int(PORT)
Gelen_thread = Thread(target = gelen_mesaj)
gelen_thread.start()
tkinter.mainloop()
Çalıştırdığımda böyle kalıyor:

1702119331768.png


Başka bir bilgisayardan aynı kodları çalıştırdığımda:

1702119569983.png


Bu görüntü oluyor. Gönder butonu çalışmıyor, normalde ilk yazdığının ismi olamasını istiyordum fakat bu yazı çıkıyor aynı bilgisayardan server ve 2 Client dosyası çalışınca en azından birbirleri arasında mesaj gönderebiliyorlar aynı ağda denediğimde ise hata alıyorum.
 

Technopat Haberler

Yeni konular

Geri
Yukarı