Так, а в чём принципиальная разница с TCP то? Там же ещё проще должно быть: не нужны никаких обработки коннектов, отваливаний, стриминга. Шлёшь себе втупую датаграммы, когда сокет свободен, и принимаешь — когда буфер не пустой, и не паришься.
И почему не нравятся библиотеки? В них же за вас уже все косяки и баги порешали. А их там, поверьте, хватает. Где-то poll тупит, где-то нет epoll, где-то файловый IO ещё вешается нормальный. В винде вообще IOCP вместо всего этого используется, и тот через жопу.
И, разве, в man epoll нет примера? В своё время мне хватило его, насколько я помню.