2016-01-19 53 views
0

我想創建一個腳本,錯誤時會嘗試重新連接。但即使在接收服務器已經開始仍然不會連接試圖在連接被拒絕後重新連接 - 蟒蛇

send_sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
while True: 
    try:   #Cant get it to make connection after retrying 
     send_sock.connect((ip, port))  #always throws Con Refused when tryed 
     break 
    except socket.error: 
     print "Connection Failed, Retrying.." 
     time.sleep(1) 
send_sock.send("hi") 

編輯:更正「嘗試:」錯字

+0

我假設您在實際代碼中使用'try:'而不是'Try'(因爲'Try'不是有效的語法) – Chris

+0

我在帖子中更正了try語句,謝謝。 – Gittb

+0

什麼是當前輸出?它會引發錯誤嗎?即使連接失敗,它是否會到達'send_sock.send'行? – Chris

回答

0

Python的插座會給你一個錯誤,應與調試您的問題有所幫助。以你爲例。所有的

try:    
    send_sock.connect((ip, port))  
except socket.error as error: 
    print("Connection Failed **BECAUSE:** {}").format(error) 

其次,你應該幾乎從來不使用while true: [...]作爲其只是要引起各種各樣的問題。在這種情況下,您可以在X次嘗試後放入一個計數器並循環。

While counter < 100: 
     try:    
      send_sock.connect((ip, port))  
     except socket.error as error: 
      print("Connection Failed **BECAUSE:** {}").format(error) 
      print("Attempt {} of 100").format(counter) 
      counter += 1 

查看Python Docs on socket exceptions瞭解更多信息。