Да, ваш вывод верен. socket.recv
является блокирующим вызовом.
socket.recv(1024)
будет считывать не более 1024 байтов, блокируя, если нет данных, ожидающих чтения. Если вы не прочитаете все данные, другой вызов socket.recv
не заблокируется.
socket.recv
также заканчивается пустой строкой, если соединение закрыто или произошла ошибка.
Если вы хотите неблокирующий сокет, вы можете использовать модуль выбора (немного сложнее, чем просто использование сокетов), или вы можете использовать socket.setblocking
.
В прошлом у меня были проблемы с socket.setblocking
, но вы можете попробовать его, если хотите.