Это нетривиальное, а также бессмысленное упражнение, так как для его эффективного завершения вам придется заново изобретать TCP.
Для «простого» способа попробуйте реализовать TFTP.TFTP - очень глупый протокол, в котором каждый кадр подтверждается индивидуально, и отправитель ждет ответа, прежде чем отправить следующий кадр.Это не очень хороший способ передачи файлов, и он намного хуже, чем TCP.
TFTP. Я думаю, что он был разработан для реализации в минимальном объеме кода (а не как эффективный).Исторически он использовался сетевыми загрузчиками, которые иногда должны жить в крошечном роме (историческое ограничение).
В зависимости от задержки и пропускной способности вашей сети, подтверждения отдельных кадров и ожидания подтвержденияперед отправкой следующего приведет к очень низкой производительности (если ваша сеть не имеет чрезвычайно низкой задержки и низкой пропускной способности, что обычно не идет рука об руку).