【发布时间】:2011-03-19 02:03:11
【问题描述】:
我想使用 C# 的 UdpClient 来监听任何传入的 UDP 数据包。我想从任何 IP 和任何端口接收数据包。
我尝试了以下方法:
UdpClient udpClient = new UdpClient(0);
IPEndPoint ep = new IPEndPoint(IPAddress.Any, 0);
byte[] data = udpClient.Receive(ref ep);
但没有成功。
有谁知道怎么回事? 提前致谢!
【问题讨论】:
-
很确定你不能像那样监听“每个”端口......也不明白你为什么想要。
-
@Fosco:网络嗅探器?
-
@MPritch:那不是真正的 UDP。您正在监听原始以太网数据包。
-
Fosco 和 Steven Sudit(下)是正确的。您不能通过指定端口 0 来监听“每个”端口。系统会为您选择一个临时端口。您现在正在侦听您没有选择的端口上的 UDP 数据包,并且没有应用程序知道要发送到的端口。如果您正在发送 UDP 数据报,或者如果您有一个单独的通道(任何类型)用于将临时端口号发送到发送应用程序,则指定端口 0 并使用临时端口确实有意义。
-
回复:网络嗅探器? 那么这不是真正的 UDP。 -- 那就叫它 UDP Sniffer。 ;-D
标签: c# networking network-programming udp udpclient