我想用C#的UdpClient来监听任何收到的UDP数据包.我想从任何IP和任何端口接收数据包.
我尝试了以下方法:
UdpClient udpClient = new UdpClient(0); IPEndPoint ep = new IPEndPoint(IPAddress.Any, 0); byte[] data = udpClient.Receive(ref ep);
但没有成功.
有谁知道什么是错的?提前致谢!
在任何港口接收?那太疯狂了.您将充斥着来自其他应用程序的消息(尝试使用TcpView了解每秒在您的系统上传递多少消息!)
你必须指定一个端口!端口有点像标识符 - 此数据包用于此程序(由端口#标识)
发送任何端口都是明智的,因为它要求系统为您选择一个端口发送OUT端口 - 这对您的应用程序来说并不是真的那么重要
您最好的想法是识别您想要收听的特定端口,并开始倾听这些端口.根据接收数据报的操作,最好/最简单的方法是Thread
为您正在侦听的每个端口创建一个新的,并在那里处理它,或者将它排入同步(lock
队列)队列或列表,以便在中央处理线.
你应该限制端口; 不可能全部倾听他们.
也就是说你可以使用像SDK/API 这样Wireshark
的东西Winpcap
直接从网络适配器"嗅探"UDP数据包.我之前在.NET应用程序中工作没有太多困难.
希望有所帮助.