当前位置:  开发笔记 > 编程语言 > 正文

如何从任何IP和任何端口接收UDP数据包?

如何解决《如何从任何IP和任何端口接收UDP数据包?》经验,为你挑选了2个好方法。

我想用C#的UdpClient来监听任何收到的UDP数据包.我想从任何IP和任何端口接收数据包.

我尝试了以下方法:

UdpClient udpClient = new UdpClient(0);
IPEndPoint ep = new IPEndPoint(IPAddress.Any, 0);
byte[] data = udpClient.Receive(ref ep);

但没有成功.

有谁知道什么是错的?提前致谢!



1> bobobobo..:

在任何港口接收?那太疯狂了.您将充斥着来自其他应用程序的消息(尝试使用TcpView了解每秒在您的系统上传递多少消息!)

你必须指定一个端口!端口有点像标识符 - 此数据包用于此程序(由端口#标识)

发送任何端口都是明智的,因为它要求系统为您选择一个端口发送OUT端口 - 这对您的应用程序来说并不是真的那么重要


不管有没有,有合理的理由想要这个.它可以在混杂模式下使用RAW + UDP套接字(并在管理员级别运行).

2> Kieren Johns..:

您最好的想法是识别您想要收听的特定端口,并开始倾听这些端口.根据接收数据报的操作,最好/最简单的方法是Thread为您正在侦听的每个端口创建一个新的,并在那里处理它,或者将它排入同步(lock队列)队列或列表,以便在中央处理线.

你应该限制端口; 不可能全部倾听他们.

也就是说你可以使用像SDK/API 这样Wireshark的东西Winpcap直接从网络适配器"嗅探"UDP数据包.我之前在.NET应用程序中工作没有太多困难.

希望有所帮助.

推荐阅读
牛尾巴2010
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有