Проще сразу считать весь буфер - а то ведь, если по одному байту
медленно считывать, неизвестно, сколько UDP-пакетов за это время
канет в /dev/null. Я бы вообще отдельным потоком завел работу с сетью. И в кольцевой буфер достаточного размера все это запихивать.
Но таки снова буду настаивать на TCP. Надежней и удобней. Хотя, если с другой стороны микроконтроллер, то, понятное дело, TCP замучишься реализовывать! Тут уж придется страдать с UDP.