Почему мой клиент не получает данные с сервера? (Tkinter) - PullRequest
0 голосов
/ 07 февраля 2020

Я попытался проверить, была ли проблема в 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...