首页 > 解决方案 > 在“接收”它们之后将 UDP 数据包保留在 OS 缓冲区中

问题描述

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

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

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

标签: socketstcpudpbuffer

解决方案


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


推荐阅读