SharpPcap中OnPacketArrival事件未触发问题求助
以下是针对你的代码和问题的核心排查点及修复方案:
权限不足
SharpPcap需要管理员权限才能捕获网络数据包。右键以管理员身份运行程序,或在Visual Studio中选择「以管理员身份运行」启动调试。错误选择捕获设备
代码直接选取devices[0]作为捕获设备,但这不一定是你当前正在使用的网卡(比如电脑同时连接有线、无线网络)。可以修改代码让用户手动选择目标设备:Console.WriteLine("Available devices:"); for (int i = 0; i < devices.Count; i++) { Console.WriteLine($"{i}: {devices[i].Description}"); } Console.Write("Select device index: "); int selectedIndex = int.Parse(Console.ReadLine()); var device = devices[selectedIndex];未启用混杂模式
默认调用device.Open()时未启用混杂模式,导致只能捕获发送到本机的数据包。修改Open方法调用,明确指定捕获模式:// 启用混杂模式,捕获经过网卡的所有数据包 device.Open(DeviceMode.Promiscuous);过滤逻辑过于严格导致无输出
你在事件处理中只输出目标IP为54.220.192.176且目标端口443的HTTPS包,如果当前没有这类流量,会误以为事件未触发。先简化逻辑验证事件是否正常触发:device.OnPacketArrival += (sender, e) => { Console.WriteLine("Packet arrived!"); // 原有的处理逻辑... };如果能看到
Packet arrived!输出,说明事件正常触发,只是过滤条件未匹配到数据包。检查网卡状态
确认选中的网卡处于正常工作状态:是否已连接网络、是否有数据传输,可以在系统网络设置中查看该网卡的活动状态。
内容的提问来源于stack exchange,提问作者Miroslav Husťák
相关产品推荐
相关产品推荐

