Чтобы сохранить максимальный размер передаваемых данных, вы должны поддерживать разбиение данных.
Разбейте ваши данные, скажем, на 10 фрагментов. Отправляйте каждый фрагмент по очереди. Суммируйте проценты по мере отправки и получения каждого фрагмента.
В качестве альтернативы отправьте получателю сообщение о том, сколько данных было получено.