Необходимо считывать с устройства информацию и в зависимости от того, что присылает “железка” слать в ответ данные.
Т.к. данные приходят порциями и с интервалами я должен в цикле считывать до конца пакета. Проблема состоит в том, что когда в клиентском сокете вызывается два раза подряд функция recv() то программа зависает. Как можно обойти эту проблему (заставить клиентский сокет считывать recv() несколько раз подряд)? Что самое интересное в серверном функция recv() работает отлично.
=================
import socket,time
HOST = '192.168.10.99'
PORT = 23
sock=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
sock.connect((HOST,PORT))
#блок авторизации
sock.send("enter\n")
sock.send("login\n")
sock.send("password\n")
#конец блока авторизации
sock.send("status\n")
while 1:
bufsock=sock.recv(1024) # здесь зависает
if not bufsock:
break
print bufsock
time.sleep(0.2)
#я пробовал заменить цикл while() на несколько подряд идущих sock.recv() но проблема осталась
sock.send("logout\n")
sock.close()