Я попытался проверить, была ли проблема в tkinter, и я понял, что это, вероятно, проблема, потому что когда я запускал его на клиенте без tkinter, он работал без проблем, и теперь я не вижу данных в консоли или в GUI окно
У вас есть идеи?
Это мой клиент:
from tkinter import *
import tkinter.simpledialog
import socket
import select
import ssl
open_client_sockets = []
def get_input_user(client_name, client_socket):
while True:
rlist, wlist, xlist = select.select([client_socket] + open_client_sockets, open_client_sockets, [], 0.000000001)
message = e1.get()
txt.insert(INSERT, message + '\n')
e1.delete(0, 'end')
if message == '01quit':
client_socket.write((client_name + message).encode('utf-8'))
txt.insert(0.0, 'You left the chat' + '\n')
return '1'
client_socket.write((client_name + message).encode('utf-8'))
if client_socket in rlist:
data = client_socket.recv(1024).decode()
print(data)
if ('had been kicked you out from the chat!') in data:
data = data.split('!')[0]
txt.insert(0.0, data + '\n')
txt.pack()
return '1'
else:
txt.insert(INSERT, data)
txt.pack()
root.mainloop()
return ''
def connect_to_a_server():
return socket.create_connection(('127.0.0.1', 87))
def create_a_username():
client_name = ''
client_name = tkinter.simpledialog.askstring('username', 'Enter username')
name_len = len(client_name)
return str(name_len) + client_name
def communication_with_the_server(client_name, client_socket, root):
message = ''
e1.bind('<Return>', lambda none: get_input_user(client_name, client_socket))
while True:
a = get_input_user(client_name, client_socket)
if a == '1':
return ''
if __name__ == '__main__':
context = ssl.create_default_context(ssl.Purpose.CLIENT_AUTH)
root = Tk()
root.title('Amifre chat')
root.geometry("700x550")
txt = Text(root, width=70, height=30)
e1 = Entry(root, width=93)
e1.place(x=0, y=487)
txt.place(x=0)
name = create_a_username()
client_socket = connect_to_a_server()
client_socket = context.wrap_socket(client_socket, server_hostname='127.0.0.1')
communication_with_the_server(name, client_socket, root)