Определить что пришло на сервер — пакет или сегмент (udp/tcp)?
Не понятно, зачем сниффер. Программно и под tcp, и под udp открываются разные сокетов и переводятся в состояние LISTEN. Какой конкретно из них выбрать для нового соединения решает операционная система исходя из приходящих пакетов (сетевой стек сам анализирует пакеты). А если все-таки надо дать больше гибкости, есть iptables.
Если уж совсем в дебри сниффинга залазить, то scapy вам в руки
Пример

Но что-то мне подсказывает, что это перебор.