2014-12-05 31 views
1

新手問題,socket.recv(255)的蟒蛇掛在等待這裏的數據

我想,如果有一個藍牙技術破解,搜索bluethooth信號

一切工作正常現有的Python程序發射機周圍,

但程序只是坐在那裏,如果沒有藍牙信號。

我發現它是越來越掛在這條線

pkt = sock.recv(255) 

我天真地猜測,僅僅是坐在那裏等待數據,我希望它給我一個錯誤或超時讓後說10秒。

我該怎麼做?我的想法是否正確?

謝謝

回答

1

recving之前致電settimeout。如果時間太長,會引發錯誤。

sock.settimeout(10) 
try: 
    pkt = sock.recv(255) 
except socket.error: 
    print "connection timed out!" 
    return 
+0

凱文,完美的,但現在它只是退出與超時錯誤的程序而不做打印,並返回。我會認爲除了條款藉此 – user1117057 2014-12-05 17:36:06

+0

哎呀,我得到的異常類型名稱錯誤的照顧。編輯。 – Kevin 2014-12-05 17:39:48

+0

第二個想法是,'socket.timeout'是'socket.error'的一個子類,所以任何一個都應該工作。我猜其他事情正在發生。你是否收到任何錯誤訊息? – Kevin 2014-12-05 17:41:25