'Close the connection without assuming anything about it.'

def close(self):

    if (self.file is not None):
        self.file.close()
    if (self.sock is not None):
        try:
            self.sock.shutdown(socket.SHUT_RDWR)
        except OSError as e:
            if (e.errno != errno.ENOTCONN):
                raise
        finally:
            self.sock.close()
    self.file = self.sock = None
