2013-04-16 78 views
1

我嘗試使用SharpPcap並使用來自SharpPcap的例子PCAP文件(libpcap的)發送數據包:http://sourceforge.net/p/sharppcap/code/ci/SharpPcap_4_1_0/tree/Examples/Example10.SendQueue/Example10.SendQueues.csSharpPcap SendQueue不起作用作爲例子

我的問題是在管線127 - int sent = winPcapDevice.SendQueue(squeue, SharpPcap.WinPcap.SendQueueTransmitModes.Synchronized);當嘗試執行這個命令我得到異常,對象引用未設置爲對象的實例。 我已經通過調試線檢查線,似乎一切正常,直到這個命令,我Pcap文件就OK了,所有的數據包被放置在Queue

回答

1

檢查在調試器winPcapDevice的值內。如果它是空的,那麼這是你的問題。否則,請發佈堆棧跟蹤,可能是從SendQueue內部拋出異常。

要找出winPcapDevice顯示爲空的原因,請在調試器中跟蹤您期望最終變爲此變量的實例的生存時間:device變量,然後是devices陣列。檢查代碼中的內容。

如果device不爲空,但運行下面的代碼行:

var winPcapDevice = device as WinPcapDevice; 

結果winPcapDevice是null,則意味着device持有的實例不能被轉換爲WinPcapDevice型。基本上它是不同的類型,也不會從WinPcapDevice繼承,請參閱this msdn article以解釋「as」運算符的工作原理。

+0

是的,它爲空,但爲什麼?我選擇設備編號 – user2214609

+0

@ user2214609我已經添加到答案 –

+0

我的問題是在這一行:var winPcapDevice =設備爲WinPcapDevice;設備不爲空,但var爲空 – user2214609