recvfrom
возвращает количество байтов в дейтаграмме, фактически полученных.
Все, что вам нужно, это
if (iResult < 0) { /* network error */ }
if (iResult != BufLen) { /* wrong size */ }
Старый ответ, не по теме
Вы должны объявить переменную для хранения размера и передать ее адрес в качестве параметра fromlen
.
recvfrom
заполнит фактический размер дейтаграммы адрес отправителя (IP и порт, поэтому вы можете отправить ответ, если хотите).
Затем вы можете проверить фактический размер по сравнению с тем, что вы ожидали.