Determine socket family at runtime

Giampaolo Rodola' gnewsg at gmail.com
Sun May 4 14:38:06 EDT 2008


On 4 Mag, 19:18, Francesco Bochicchio <bock... at virgilio.it> wrote:
> On Sun, 04 May 2008 08:49:55 -0700, Giampaolo Rodola' wrote:
> > Hi there,
> > since the socket.socket.family attribute has been introduced only in
> > Python 2.5 and I need to have my application to be backward compatible
> > with Python 2.3 and 2.4 I'd like to know how could I determine the
> > family of a socket.socket instance which may be AF_INET or AF_INET6.
> > Is there some kind of getsockopt() directive I could use?
> > For now I've been able to determine the family by using:
>
> > # self.socket = a connected socket.socket instance
> > ip, port = self.socket.getsockname()[0:2]
> > af = socket.getaddrinfo(ip, port)[0][0]
>
> > ...but I'd like to know if some other solution is preferable.
>
> > Thanks.
>
> > --- Giampaolo
> >http://code.google.com/p/pyftpdlib
>
> Ciao,
>
> what about wrapping the socket type and  adding a 'family' attribute
> to the base socket class? Something like:
>
> class SocketWrapper(socket.socket):    def __init__(self, family, type, proto=0):             socket.socket.__init__(self, family, type, proto)              self.family = family
>
> then you have just to create the sockets with SocketWrapper insetead of
> socket.socket. For the rest of your code it would not matter, and then you
> are sure to always have a .family attribute.
>
> Ciao
> ----
> FB- Nascondi testo tra virgolette -
>
> - Mostra testo tra virgolette -

Ciao,
I don't think that it would be possible since the socket I'm talking
about is returned by socket.socket.accept().


--- Giampaolo
http://code.google.com/p/pyftpdlib



More information about the Python-list mailing list