簡體   English   中英

如何檢查python socket recvfrom()數據

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM