Ao testar certas conectividades multicast no passado, tenho usado o socat para fazer isso:
socat -u UDP4-RECVFROM:12345,add-membership=224.1.2.3:eth0,fork,reuseaddr,readbytes=32 SYSTEM:"hexdump -C"
e depois ctrl-c quando vejo alguns pacotes ou depois de um segundo ou dois eu não vejo nada.
Agora, isso obviamente é impraticável ao ter que fazer isso para centenas de endereços multicast, especialmente quando alguns deles enviam dezenas de milhares de pacotes por segundo (a carga é 5.000 mais rápida do que eu poderia atingir ctrl-c).
Como posso limitar socat para receber apenas um pacote e depois sair? Além disso, como posso definir um tempo limite para quando nada foi recebido (eu tentei o parâmetro -T, mas não parece ter nenhum efeito)