我尝试使用SharpPcap并使用来自SharpPcap:0/tree/Examples/Example10.SendQueue/Example10.SendQueues.cs的示例从pcap (libpcap)发送数据包。
我的问题是在第127行- int sent = winPcapDevice.SendQueue(squeue, SharpPcap.WinPcap.SendQueueTransmitModes.Synchronized);中,当尝试执行这个命令时,我得到异常,对象引用没有设置为对象的实例。我已经逐行检查了调试器,并且似乎一切正常,直到这个命令,我的Pcap文件OK,所有的数据包都放在Queue中。
发布于 2013-04-16 05:38:44
签入调试器winPcapDevice的值。如果它是空的,那么这就是你的问题。否则,请发布堆栈跟踪,异常可能是从SendQueue内部抛出的。
要了解为什么winPcapDevice显示为null,请在调试器中跟踪您希望在这个变量中结束的实例的生命时间:device变量,然后是devices数组。在您逐步遍历代码时,检查这些代码中的内容。
如果device不是null,但运行以下代码行:
var winPcapDevice = device as WinPcapDevice;在winPcapDevice为null的情况下,这意味着device持有的实例不能转换为WinPcapDevice类型。基本上,它的另一种类型也不从WinPcapDevice继承,请参考这篇msdn文章来解释“as”操作符是如何工作的。
https://stackoverflow.com/questions/16029252
复制相似问题