2013-04-08 12 views
5

Sto scrivendo un bot IRC in Python.Python, ricreare un socket e riconnettersi automaticamente

Fonte: http://pastebin.com/gBrzMFmA (dispiace per pastebin, non so come usare modo efficiente/correttamente il codice tagthing qui)

Quando la presa "IRC" muore, c'è comunque ho potuto fare per rilevare se è morto e quindi si ricollega automaticamente?

Ho cercato su google per un po 'e ho scoperto che avrei dovuto creare un nuovo socket. Stavo cercando e cose aggiunto come la cattura socket.error nel mentre Vero: ma sembra per appendere e non ricollegare correttamente ..

Grazie per l'aiuto in anticipo

+0

quale codice hai? – User

risposta

5

risposta qui: Python : Check if IRC connection is lost (PING PONG?)

Mentre risposta accettata del proprietario domanda funziona, io preferisco la risposta di John Ledbetter qui, soley per la sua semplicità: https://stackoverflow.com/a/6853352/625919

Quindi, per me, ho qualcosa sulla falsariga di

def connect(): 
    global irc 
    irc = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
    irc.connect((server, port)) 
    #and nick, pass, and join stuffs 
connect() 
while True: 
    data = irc.recv(4096) 
    if len(data) == 0: 
     print "Disconnected!" 
     connect() 
+0

questo non funzionerebbe solo se c'era un flusso continuo di dati da ricevere? Sembra che si riconnetterebbe nel momento in cui ha ricevuto un pacchetto vuoto dal server? – user1561108