Python, recreate a socket and automatically reconnect

Pro Fessor picture Pro Fessor · Apr 8, 2013 · Viewed 17.9k times · Source

I'm writing a IRC bot in Python.

Source: http://pastebin.com/gBrzMFmA ( sorry for pastebin, i don't know how to efficently/correctly use the code tagthing on here )

When the "irc" socket dies, is there anyway I could go about detecting if its dead and then automatically reconnecting?

I was googling for awhile now and found that I would have to create a new socket. I was trying and added stuff like catching socket.error in the while True: but it seems to just hang and not reconnect correctly..

Thanks for help in advance

Answer

DharmaTurtle picture DharmaTurtle · Jun 26, 2013

Answered here: Python : Check if IRC connection is lost (PING PONG?)

While the question owner's accepted answer works, I prefer John Ledbetter's answer here, soley for its simplicity: https://stackoverflow.com/a/6853352/625919

So, for me, I have something along the lines of

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()