Если вы используете TCP, то все, что вам нужно сделать, это отправить свой блок данных (я полагаю, у вас есть какой-то протокол, который сообщает вам, сколько байтов находится в блоке, например, заголовок?) И когда вы получите Ваш блок на другом конце просто запишите его в файл, в который вы пишете. TCP будет следить за тем, чтобы все поступало в ожидаемом порядке, поэтому вы должны просто пройтись по чтению файла по X байтам и посылать их, а затем на стороне recv вы просто извлекаете свои данные и записываете их в файл ... Просто помните, что каждое чтение, которое вы выпускаете на своем сокете, может возвращать где-нибудь между 1 и байтами "размера блока", и что ваш протокол должен быть в состоянии сказать вам, сколько ожидать, и что вы должны затем зацикливаться до на самом деле получил столько байтов, сколько вы ожидаете ...
Если вы используете UDP, тогда все становится немного веселее, так как вам нужно отследить, какой блок представляет конкретная датаграмма ...
Вопрос по домашнему заданию?