3

アプリケーションで PcapDotNet DLL を使用していますが、次のような問題が発生しています。

私のアプリケーションは PCap ファイル (Wireshark ファイル) を受け取り、パケットをネットワーク カードに送信します。1 つまたは複数のファイルを何度も (通常は 500 回まで) 送信すると、アプリケーションがFailed opening file C:\file.pcapというエラーでクラッシュします。私はプロジェクト フォーラムで質問しようとしましたが、開発者が常駐しているわけではないので、他の誰かがここで私を助けてくれるかもしれません。

エラーの原因はinputCommunicatorにあり、エラーが発生した場合、このオブジェクトの値は null です。これは、数百回 (約 500 回) の反復後にのみ発生することに注意してください。

コード:

    using (PacketCommunicator inputCommunicator = selectedInputDevice.Open(65536, PacketDeviceOpenAttributes.Promiscuous, 1000))
    {
        using (mOutputCommunicator = selectedOutputDevice.Open(100, PacketDeviceOpenAttributes.Promiscuous, 1000))
        {                
            while (inputCommunicator.ReceivePacket(out packet) == PacketCommunicatorReceiveResult.Ok && _isStop) //fill the buffer with the packets from the file
            {
                using (PacketSendBuffer mSendBuffer = new PacketSendBuffer((uint)packet.Length * 4))
                {                                                                                       
                    else if (packet != null)
                    {
                        lastTime = packet.Timestamp;
                        mSendBuffer.Enqueue(packet); //put the packet in the buffer
                    }

                    mOutputCommunicator.Transmit(mSendBuffer, _isBurst); //send the packet
                    _numberOfSendPackets++;
                }
            }
        }
    }
4

1 に答える 1

2

これは WinPcap のバグです。詳細については、http://www.winpcap.org/pipermail/winpcap-bugs/2012-December/001547.htmlを参照してください。

于 2012-12-07T14:34:04.417 に答える