Можно ли сделать так, чтобы окно 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 пользователя могли редактировать текст на сервере.