在 "receiving" 之后的 OS 缓冲区中保留 UDP 数据包

Preserve UDP packets in the OS buffer after "receiving" them

我正在 Windows 使用 C#,但这更像是一个一般性问题。 如果我使用 UDP 客户端接收 UDP 包,它们通常会从接收缓冲区中删除,因此其他程序无法登录器访问此数据。 我的实验表明,广播消息并非如此。如果我将多个程序连接到同一个 UDP 端口并调用接收函数,两个应用程序都可以看到广播包,但只有一个应用程序可以看到单播包,因为它们在第一次被 OS 读取时被删除?我猜...?

我的问题是有没有办法改变这种套接字行为?我可以设置我的套接字来保存这些数据,以便第二个程序也可以访问它吗?或者这是不可能的?

您可以猜到的总体目标是让多个程序接收通过单播发送的相同 UDP 包。

经过大量研究,我可以确认这对于单播包是不可能的。 您可以使用 PCAP 来实现此目的,但不能使用本机 UdpClient