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()
Başka bir bilgisayardan aynı kodları çalıştırdığımda:
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.