У меня проблема с модулем сокета Python, которую я не смог найти больше нигде.
Я создаю простой чат-клиент TCP, и хотя он изначально успешно подключается к серверу, скрипт бесконечно зависает на sock.recv()
, несмотря на то, что я явно установил время ожидания.
Я пытался использовать разные значения времени ожидания и включать setblocking(False)
, но независимо от того, что я делаю, он продолжает действовать так, как будто сокет находится в режиме блокировки.
Вот соответствующие части моего кода:
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.settimeout(1)
def listen_to_server():
global connected
while connected:
ready_to_read, ready_to_write, in_error = select.select([sock], [], [])
if ready_to_read:
try:
data = sock.recv(1024)
except socket.timeout:
print('TIMEOUT')
if not data:
append_to_log('Disconnected from server.\n')
connected = False
else:
append_to_log(str(data))
Любые предложения будут полезны, я здесь в полной растерянности.