you have to agregate socket and the object must have "fileno" method, thats gives a possibility to use instanses of your class with "select.select" function
class mySocket: def __init__(self, ...): self.__socket = None ... def fileno(self): return self.__socket.fileno() def connect(self, __host, __port): try: self.close() self.__socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) self.__socket.connect((__host, __port)) ... def close(self): try: if self.__socket is not None: self.__socket.close() finally: self.__socket = None ... [EMAIL PROTECTED] wrote: > socket objects have a little quirk. If you try to receive 0 bytes on a > blocking socket, they block. That is, if I call recv(0), it blocks > (until some data arrives). > > I think that's wrong, but I don't want to argue that. I would like to > create a subclass of socket that fixes the problem. Ideally, something > like: > > class new_socket(socket): > def recv( self, bufsize, flags=0 ): > if bufsize == 0: > return "" > else: > return socket.recv( bufsize, flags ) > > They only problem is, sockets return socket objects via the accept > call. And the socket returned is of type socket, of course, not > new_socket, as I would like. I could override accept() to return a > new_socket, but I don't know how to convert the old socket to a new > socket. That is, I'd like to add a method to the class above something > like: > > def accept( self ): > conn, addr = socket.accept() > <convert conn, which is type socket to type new_socket> > return ( conn, addr ) > > Does anyone have any suggestions on how to do the above? > -- Best regards, Maksim Kasimov mailto: [EMAIL PROTECTED] -- http://mail.python.org/mailman/listinfo/python-list