[英]How to check the python socket recvfrom() data
我正在使用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()
,則如何使用它們。
如果您不介意阻止呼叫,我通常使用settimeout等待消息。 如果settimeout沒有及時收到消息,它將引發異常。
因此,基本上您可以執行以下操作:
s.settimeout(1)
try:
recvpack, payload = s.recvfrom(1024)
except error:
recvpack = None
if recvpack is not None:
...
來源: https : //docs.python.org/2/library/socket.html#socket.socket.settimeout
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.