2010-08-07 37 views
31

Bağlantı kurarken zaman aşımına uğramak istediğim bir soket var, böylece henüz bağlanamayan tüm işlemi iptal edebilirim, ayrıca zaman aşımı gerektiren soket için makefile kullanmak isteyebilir.Python soket bağlantı zaman aşımı

Bunu yapmanın kolay bir yolu var mı yoksa bu yapılması zor bir şey mi olacak?

piton

cevap

56

sadece connect() denemeden önce soket settimeout() yöntemi kullanmak gerekir, unutmayın ben soket bağlantısı için bir zaman aşımı var hala makefile kullanabilir ve böylece zaman aşımı sıfırlama sonra bağlanan izin veriyor mu Bağlandıktan sonra, soketi blokaj moduna ayarlamak için settimeout(None) olmalıdır, makefile için bu gereklidir. İşte kullanıyorum kodu:

sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
sock.settimeout(10) 
sock.connect(address) 
sock.settimeout(None) 
fileobj = sock.makefile('rb', 0) 
+5

bilgi için kullanmak uygundur, zaman aşımı saniye cinsinden ifade edilmelidir. Unix soketi için –

8

Eğer python2.6 kullanıyorsanız veya daha yeni bir socket.create_connection

sock = socket.create_connection(address, timeout=10) 
sock.settimeout(None) 
fileobj = sock.makefile('rb', 0) 
+0

çok fazla yardım etmiyor – Pierrot

İlgili konular