send data over the connection, and keep sending until it all goes

        .. note:: this method may block if the socket's send buffer is full

        :param data: the data to send
        :type data: str
        :param flags:
            flags for the send call. this has the same meaning as for
            :meth:`recv`
        :type flags: int

def sendall(self, data, flags=0):
        """send data over the connection, and keep sending until it all goes

        .. note:: this method may block if the socket's send buffer is full

        :param data: the data to send
        :type data: str
        :param flags:
            flags for the send call. this has the same meaning as for
            :meth:`recv`
        :type flags: int
        """
        sent = self.send(data, flags)
        while sent < len(data):
            sent += self.send(data[sent:], flags)