Из того что я понял.
Для файла ты можешь буфер любого размера дать и попросить асинхронно заполнить, а для сокета асинхронного надо его полить на предмет того, что он реди, и только потом дать ему буфер.
Может я и не прав, и тоже можно сразу дать буфер и попросить заполнить.