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