Можно ли сделать так, чтобы окно tkinter'а находилось на сервере, а не на клиенте?

У меня есть 2 .py файла:

Сервер - просто выводит на консоль то, что получает

import socket


if __name__ == '__main__':
    s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
    s.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
    s.bind(('0.0.0.0', 11719))
    while True:
        message = s.recv(128)
        print(message)

Клиент - это окно tkinter с единственным полем для ввода текста. После нажатия Enter на клавиатуре, то что написано в поле передается серверу.

import socket
from tkinter import *


def loopproc():
    text.see(END)
    s.setblocking(False)
    try:
        message = s.recv(128)
    except Exception:
        tk.after(1, loopproc)
        return
    tk.after(1, loopproc)
    return


def sendproc(event):
    sock.sendto(f"{text.get('1.0', END)}".encode('utf-8'),
                ('255.255.255.255', 11719))


if __name__ == '__main__':
    tk = Tk()

    s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
    s.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
    s.bind(('0.0.0.0', 11719))

    sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    sock.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)

    text = StringVar()
    text.set('')

    text = Text(tk)
    text.pack()

    text.bind('<Return>', sendproc)
    text.focus_set()

    tk.after(1, loopproc)
    tk.mainloop()

Можно ли сделать так, чтобы tkinter находился на сервере, а не на клиенте?
Или, например, чтобы было 2 tkinter'а: один основной на сервере, а второй на клиенте. Когда клиент подключается к серверу перемерты окна сервера передавались клиенту.
То есть сделать так, чтобы 2 пользователя могли редактировать текст на сервере.


Ответы (0 шт):