2012-11-30 6 views
3

많은 시도 후 파일을 열지 못했습니다, 나는 문제가 발생한 오전 :내가 내 응용 프로그램에 PcapDotNet DLL의를 사용하고

내 응용 프로그램은 PCAP 파일 (와이어 샤크 파일)을 받아 네트워크 카드에 패킷을 전송합니다. 파일이나 파일을 여러 번 보내면 (보통 ~ 500 번) 응용 프로그램이 오류로 종료됩니다. 파일 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++; 
       } 
      } 
     } 
    } 
+0

디스크에있는 파일을 반복적으로 액세스하고 있습니까? 그렇다면 전체 프로세스를 통해 그것을 메모리에 보관하지 않는 이유가 있습니까? 프로세스가 실행되는 동안 다른 것이 파일에 액세스하려고 할 가능성이 있습니까? – CodeWarrior

+0

더 많은 코드를 표시 할 수 있습니까? 예를 들어 파일 패킷 내용을 어떻게 읽으십니까? 또한이 오프라인을 읽고 있습니까? – MethodMan

+0

네, 디스크에있는 모든 반복 파일을 액세스하고 아무도 내가 파일을 액세스하는 동안 파일을 버퍼에 보관할 수 있지만 다른 파일을 500 개 재생하고 싶은 경우에는 어떻게해야합니까? – user1710944

답변

관련 문제