bu hata-----------------
#!/usr/bin/env python3
"""Script for Tkinter GUI chat client."""
from socket import AF_INET, socket, SOCK_STREAM
from threading import Thread
import tkinter
def receive():
"""Handles receiving of messages."""
while True:
try:
msg = client_socket.recv(BUFSIZ).decode("utf8")
msg_list.insert(tkinter.END, msg)
except OSError: # Possibly client has left the chat.
break
def send(event=None): # event is passed by binders.
"""Handles sending of messages."""
msg = my_msg.get()
my_msg.set("") # Clears input field.
client_socket.send(bytes(msg, "utf8"))
if msg == "{quit}":
client_socket.close()
top.quit()
def on_closing(event=None):
"""This function is to be called when the window is closed."""
my_msg.set("{quit}")
send()
top = tkinter.Tk()
top.title("Chatter")
messages_frame = tkinter.Frame(top)
my_msg = tkinter.StringVar() # For the messages to be sent.
my_msg.set("Type your messages here.")
scrollbar = tkinter.Scrollbar(messages_frame) # To navigate through past messages.
# Following will contain the messages.
msg_list = tkinter.Listbox(messages_frame, height=15, width=50, yscrollcommand=scrollbar.set)
scrollbar.pack(side=tkinter.RIGHT, fill=tkinter.Y)
msg_list.pack(side=tkinter.LEFT, fill=tkinter.BOTH)
msg_list.pack()
messages_frame.pack()
entry_field = tkinter.Entry(top, textvariable=my_msg)
entry_field.bind("<Return>", send)
entry_field.pack()
send_button = tkinter.Button(top, text="Send", command=send)
send_button.pack()
top.protocol("WM_DELETE_WINDOW", on_closing)
#----Now comes the sockets part----
HOST = input('Enter host: ')
PORT = input('Enter port: ')
if not PORT:
PORT = 33000
else:
PORT = int(PORT)
BUFSIZ = 1024
ADDR = (HOST, PORT)
client_socket = socket(AF_INET, SOCK_STREAM)
client_socket.connect(ADDR)
receive_thread = Thread(target=receive)
receive_thread.start()
tkinter.mainloop() # Starts GUI execution.
buda client-----------------
yaptık ama host=localhost bunu nasıl ikimizinde kullanabileceği hale getiririz
Bende çalıştı. Muhtemelen girdiğiniz PORT
numarası farklı.
evet ama farklı pclerde olmuyor
Aynı ağda mısınız? Yoksa farklı ağlarda mı?
Eğer aynı ağdaysanız, server’ın yerel ip adresini yazmanız gerekiyor. Eğer farklı ağlardaysanız, harici ip
adresini yerel ip adresinde açtığınız bir port’a yönlendirmeniz gerekiyor.
nasıl yapıcaz hiç bilgimiz yok
Port yönlendirmeyi modem arayüzünü kullanarak yapacaksınız.
bir şey sorucam diğer server kullanan uygulamalrda neden böyle uğraşmıyoruz
Diğer server kullanan uygulamalar derken?
eve online gibi veya dropboxın python ile yaptığı mesajlaşma uyg gibi
Dropbox’ın kendi sunucusu var, istemciler doğrudan dropbox’a bağlanıyor.
biz bir chat uygulaması yapıcaz ama bunu yapamadık bunun için ne yapmamız lazım
yani anladım böyle modem üzerinden uğraşıyoruz ama normal bir kullanıcı bunları yapmak istemez ne yapmalıyız
Dostum normal bir kullanıcıya istemci
'yi vereceksiniz zaten. Sunucu
sizde kalacak.
haa sunucuyu mu böyle bağlıcaz
Aynen, istemcinin bir şey yapmasına gerek yok. Ancak şöyle bir durum var. Siz modem’e her reset attığınızda ip adresiniz değişecek. Muhtemelen dinamik bir ip kullanıyorsunuz. Bir algoritma geliştirip, istemcinin güncel ip adresine ulaşmasını sağlayabilirsiniz. Veya sabit bir ip adresinizin olması gerekiyor.
socket ile uğraşmak bu kadar uğraştırıcımı ya