1

我尝试使用 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文件正常,所有数据包都放在里面Queue

4

1 回答 1

1

在调试器中检查 winPcapDevice 的值。如果它为空,那么这是你的问题。否则请发布堆栈跟踪,可能是从内部抛出异常SendQueue

要找出 winPcapDevice 为何显示为空,请在调试器中跟踪您期望在此变量中结束的实例的生命周期:device变量,然后是devices数组。在您逐步执行代码时检查其中的内容。

Ifdevice不为空,但运行以下代码行:

var winPcapDevice = device as WinPcapDevice;

结果winPcapDevice为 null 这意味着device不能将所持有的实例强制转换为WinPcapDevice类型。基本上它是一种不同的类型,也不会继承自有关“as”运算符如何工作的说明,WinPcapDevice请参阅此 msdn 文章

于 2013-04-16T05:38:44.093 回答