SharpPcap SendQueue不像示例中那样工作
本文关键字:工作 SendQueue SharpPcap | 更新日期: 2023-09-27 18:09:15
我尝试使用SharpPcap和SharpPcap中的示例从pcap文件(libpcap)发送数据包:http://sourceforge.net/p/sharppcap/code/ci/SharpPcap_4_1_0/tree/Examples/Example10.SendQueue/Example10.SendQueues.cs
我的问题是在第127行- int sent = winPcapDevice.SendQueue(squeue, SharpPcap.WinPcap.SendQueueTransmitModes.Synchronized);
,当尝试执行此命令时,我得到异常对象引用未设置为对象的实例。我用调试器逐行检查,似乎一切都很好,直到这个命令,我的Pcap
文件OK,所有的包都放在Queue
在调试器中检查winPcapDevice的值。如果它是空的,那么这就是你的问题。否则,请发布堆栈跟踪,异常可能是从SendQueue
内部抛出的。
要找出winPcapDevice显示为null的原因,请在调试器中跟踪您期望在此变量中结束的实例的生命周期:device
变量,然后是devices
数组。当您逐步执行代码时,检查其中的内容。
如果device
不为空,但运行以下代码行:
var winPcapDevice = device as WinPcapDevice;
导致winPcapDevice
为null,这意味着device
持有的实例不能被强制转换为WinPcapDevice
类型。基本上,它是一种不同的类型,也没有从WinPcapDevice
继承。请参阅这篇msdn文章,了解"as"操作符如何工作。