При создании клиента из модуля сокетов Python я сталкиваюсь с OSError: [WinError 10022] An invalid argument was supplied
, из-за которого меня смущает причина и способы управления им.
Для чего бы это ни стоило, я на Windows 10.
Вкратце, целевой код вращается вокруг процесса соединения:
import socket
client = socket.socket()
hostname = socket.gethostname()
port = 50007
while (True):
client.settimeout(0.1)
try:
client.connect((hostname, port))
except socket.timeout:
print("timeout")
continue
else:
. . .
, который возвращает:
timeout
Traceback (most recent call last):
File "C:/testClient.py", line 12, in <module>
client.connect((hostname, port))
OSError: [WinError 10022] An invalid argument was supplied
По общему признанию, эта ошибка появилась только один раз, когда истекло время ожиданиябыл представлен.Как видно из выходных данных, время ожидания успешно истекло один раз, но при второй повторной попытке это не удалось.
Я проверил переменные hostName
и port
после истечения времени ожидания, однако они не изменились (как они должны't).
Единственная причина, по которой система находится в цикле с тайм-аутом, заключается в том, что я также использую модуль tkinter для пользовательского интерфейса и хочу, чтобы пользовательский интерфейс постоянно обновлялся, чтобы программа не работала.т перестать отвечать.Все, что я хочу - это попытка подключения, если оно истекло.
Что я делаю не так?