Я пытаюсь создать приложение для обмена сообщениями, используя tkinter в качестве GUI. Я хочу вызывать функцию, когда получаю сообщение, эта функция на самом деле отображает сообщение, но используя некоторое время l oop, она может иногда обработать sh или испортить обновления на моем GUI.
* 1002. * Я попытался вызвать подпрограмму после того, как я подключился к серверу ...
def get_msg(): # This will run code that will get messages
while True:
Crecv = clientsocket.recv(1024).decode() # Waits for a message
print(Crecv) # Prints whatever the server has sent into console
messages.insert(END, Crecv) # Insets the message into the message Listbox
Это не сработало, я предположил, что это из-за того, что l oop (как я бы просто сделал * 1026) * после подключения)
Теперь я хочу попробовать вызвать подпрограмму только при получении сообщения.
Вот мой скрипт server.py
from socket import *
import socket
import select
## -- Server (Rooms) -- ##
users = []
addresses = []
host_name = socket.gethostname()
HOST = socket.gethostbyname(host_name)
PORT = 12345
print(f"Server Info\nHOST: {HOST}\nPORT: {PORT}")
serversocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
serversocket.bind((HOST, PORT))
serversocket.listen(5)
clientsocket, address = serversocket.accept()
def user_join():
# Append username to users[]
# Append user address to adresses[]
print(f"{address} connecting (nicked {username})")
clientsocket.send(f"{username} joined the room!").encode()
print(address)
with clientsocket:
while True:
Srecv = clientsocket.recv(1024).decode()
print(f"{address}: {Srecv}")
# Add server time to message before sending
clientsocket.sendall(Srecv.encode())
Это то, что я будет обновляться позже, поэтому есть несколько неиспользуемых списков и т. д. c.
Идея состоит в том, что .... Клиент подключается к серверу -> Клиент отправляет сообщение -> server.py декодирует сообщение и затем отправьте его всем, кто подключен -> OP Client повторно получит сообщение и отобразит его, другие клиенты просто получат сообщение и отобразят его.
Это то, чего я пытаюсь достичь на конец проекта, но я не могу даже Подключитесь к серверу, когда мой клиент выйдет из строя, как только я подключусь.
Я скопировал весь свой код сокета из не GUI версии моего проекта под названием client.py
from socket import *
import socket
## -- Server (Room) -- ##
host = input("Host: ")
port = int(input("Port: "))
username = input("Username: ")
username = "<" + username + ">"
print(f"Connecting under nick \"{username}\"")
clientsocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # Creates socket
clientsocket.connect((host, port)) # Connects to the server
while True:
Csend = input("MSG: ") # Input message
#Csend = f"{username} {Csend}" # Add username to message
clientsocket.send(Csend.encode()) # Send message to ONLY the server
print(clientsocket.recv(1024).decode())