У меня есть программа, которая просто отправляет сообщения на сервер через интерфейс tkinter. Я использую различные подпрограммы для запуска таких базовых вещей, как запуск нового соединения и отправка сообщения. Единственная проблема заключается в том, что он продолжает выдавать ошибку с именем «ClientOcket не определен», когда пользователь имеет до go через другую подпрограмму для установления sh соединения.
Я попытался переместить подпрограммы, делая clientocket глобальной переменной, и я дважды проверил правильность моих имен. Код, который я получил из этих подпрограмм, отлично работает (программа для чата, которая запускается в консоли, которую я сделал некоторое время go), так что, должно быть, именно так я структурировал программу.
Вот все подпрограммы которые имеют дело с сокетами
def send_msg(): # Sends a message to the server (called from tkinter button)
try:
Csend = field.get("1.0", "end-1c")
Csend = str(Csend)
clientsocket.send(Csend.encode())
field.delete()
field.insert(END, "")
except error as err:
Csend = field.get("1.0", "end-1c") # 1.0 - Line one, char zero
print(f"Can't send message \"{Csend}\": Not connected to a server")
print(err)
def new_connection():
# Tkinter code goes here
def connect_server(): # Tries to connect to the server
try: # This runs the first check, if there is an existing connection
clientsocket.close()
except:
print("No existing connection")
try: # Runs the second check, if it can connect using the info
clientsocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
host = host_ent.get() # Gets STR of host IP
port = port_ent.get() # Gets STR of port
port = int(port) # Converts port to INT
clientsocket.connect((host, port)) # Connects to the server
except:
print("Could not connect, incorrect inputs?")
def disconnect_server():
try:
clientsocket.close()
except:
print("No existing connection")
Все эти подпрограммы вызываются из меню или кнопок tkinter.
Я совершенно новичок в сокетах, поэтому, если какой-либо код является уровнем новичка, то я извините.
Заранее благодарен за любую помощь!