4 整合数据我们需要一个线程来开启接收ping回复,同时另一个线程把所有ping发出去 , 最后拿ping的所有IP和ping回复的所有IP求交集,就是我们需要的结果 。
/// <summary>/// Ping所有地址/// 占用两个线程/// </summary>/// <param name="dstAddrs">目标地址</param>/// <param name="delay">最后一个IP发出ping之后的等待回复时长</param>/// <returns></returns>public async Task<IPAddress[]> PingAllAsync(IEnumerable<IPAddress> dstAddrs, TimeSpan delay){// 开始监听ping的回复using var cts = new CancellationTokenSource();var recvTask = this.RecvEchoReplyAsync(cts.Token);// 对所有ip发pingawait this.SendEchoRequestAsync(dstAddrs);// 延时取消监听cts.CancelAfter(delay);var results = await recvTask;// 清洗数据return results.Intersect(dstAddrs).ToArray();}
后记通过WindivertDotnet的路由,无中生有IP数据包,并可以将其正确的发送的指定的目的地IP地址 。像本示例的这个Ping方式,10秒ping完1万个IP并拿到其回复的IP是非常轻松的 。
【WindivertDotnet快速发Ping】
推荐阅读
- 三星怎么快速截屏(三星手机怎么录屏)
- 三星截屏快速手势(三星可以敲击背部截屏吗)
- yy怎么创建主频道(yy怎么快速进入私人频道)
- yy如何创建小频道(yy怎么快速进入私人频道)
- 抖音怎么快速设置动态壁纸(抖音动态最火壁纸美女)
- 绝地求生新手如何快速入门(绝地求生新手入门教学怎么跳过)
- 开源WindivertDotnet
- 玩绝地求生,怎样快速上分(pubg快速上分)
- 学生怎样能快速赚钱(学生捡破烂赚钱)
- iphone 12支持多少瓦的快充_iphone12支持30w快充吗