2017-07-13 3 views
-2

Wie mache ich einen Socket warten nur für eine bestimmte Zeit, bevor Sie weitermachen. Ich habe einen Client, der Paket von einem Broadcast-Empfänger in Android erwartet, aber es wartet für immer, wenn es nicht das Paket über den Socket erhält. Ist es möglich, eine bestimmte Empfangsanforderung in Python auf etwa 5 Sekunden zu verschieben? Es ist vielleicht trivial, aber ich komme aus einem Java-HintergrundPython Socket Client Wartezeit

def obtain_packet(self): 
     datarecevied = self.GetPCSocket().recv(4096) 
     print datarecevied 
     return str(datarecevied.strip()) 

Antwort

1

From the docs:

socket.settimeout (Wert)

ein Timeout Auf Socket-Operationen blockiert. Das Wertargument kann ein nicht negatives Fließkomma sein, das Sekunden oder None ausdrückt. Wenn ein Gleitkommawert angegeben wird, wird bei nachfolgenden Socket-Vorgängen eine Zeitüberschreitungsausnahme ausgelöst, wenn der Zeitüberschreitungswert abgelaufen ist, bevor der Vorgang abgeschlossen wurde. Wenn Sie ein Zeitlimit für "Keine" festlegen, werden Timeouts bei Socket-Vorgängen deaktiviert. s.settimeout (0.0) ist äquivalent zu setblocking (0); s.settimeout (None) entspricht s.setblocking (1).

+0

Vielen Dank –