How do I reconnect a disconnected socket?

Mike termim at gmail.com
Fri Mar 28 13:01:25 EDT 2008


On Mar 28, 10:01 am, Jason Kristoff <deevine-removethis-
s... at gmail.com> wrote:
> I'm trying to make something that once it is disconnected will
> automatically try to reconnect.  I'll add some more features in later so
> it doesn't hammer the server but right now I just want to keep it simple
> and get that part working.  The problem is that when I use sock.close I
> get an error message of
> Bad File Descriptor
> and if I either use shutdown or just go straight to reconnecting I get:
> Transport endpoint is already connected
>
> This is what I've got right now:
>
> #! /usr/bin/env python
> import socket, string
> sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
> def doconn():
>      sock.connect(("localhost", 1234))
> def dodiscon():
>      sock.close()
>      doconn()
>
> doconn()
>
> while (1):
>      buffer = sock.recv(1024)
>      if not buffer:
>          dodiscon()

I'd recommend to look at Twisted ReconnectingClientFactory -
http://twistedmatrix.com/trac/browser/trunk/twisted/internet/protocol.py#L198



More information about the Python-list mailing list