如果我有一个应该从多播接收数据的进程,我该如何检查它是否确实如此?

如果我有一个应该从多播接收数据的进程,我该如何检查它是否确实如此?

我可以检查gstack,但仅仅因为我看到调用上的侦听器线程recv并不意味着调用没有返回。我想到的另一件事是做类似的事情:

netstat -lupe | grep <PROCESS_PID>

检查通过 udp 监听的套接字的 inode。然后可以尝试观察(watch命令)/proc/net/udp这些 inode 的接收和传输队列。不过,我不确定这是否是诊断此问题的好方法。尝试监听相同的多播组来检查传入的数据也不能真正保证相关进程正在接收数据。

我还可以探索或尝试哪些其他方法或方法?

答案1

查看netstat -gn输出来查看连接。

tcpdump可以帮助实际看到活动...例如:tcpdump -i eth1 -s0 -net 224.0.31.0/24

相关内容