Как проверить данные сокета python recvfrom()
Я работаю над программированием сокетов в Python. Используя ESP python, я создал сокет для сервера и отправил запрос (в формате пакета API, в соответствии с кодом сервера, на который он будет отвечать). При получении сокета мне нужно проверить данные (если данные получены, необходимо перейти к следующей операции. Если нет, мне нужно отправить запрос еще раз). отправка в порядке. При получении сокета, если он не получает данные, он не идет к следующей инструкции.. пожалуйста, помогите мне.
код:
try:
s = socket(AF_INET, SOCK_DGRAM)
print "socket created"
except socket.error:
print "failed to create socket"
sys.exit()
отправка данных:
s.sendto("packet of data", 0, (HOST,PORT))
При получении:
recvpack, payload=s.recvfrom(1024)
if not recvpack:
s.sendto("packet of data", 0, (HOST,PORT))
elif(recvpack[]="packet of data"):
pass # continue to next operations..
В приведенном выше заявлении о получении, если recvfrom()
в получении каких-либо данных, как проверить recvpack
и вернуться к следующим операциям.. Если socket.settimeout()
или же socket.setblocking()
это решение, как использовать эти..
1 ответ
Если вы не возражаете против блокирующего вызова, я обычно использую settimeout для ожидания сообщения. settimeout вызовет исключение, если он не получит сообщение вовремя.
В общем, вы можете сделать что-то вроде этого:
s.settimeout(1)
try:
recvpack, payload = s.recvfrom(1024)
except error:
recvpack = None
if recvpack is not None:
...