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++;
}
}
}
}
디스크에있는 파일을 반복적으로 액세스하고 있습니까? 그렇다면 전체 프로세스를 통해 그것을 메모리에 보관하지 않는 이유가 있습니까? 프로세스가 실행되는 동안 다른 것이 파일에 액세스하려고 할 가능성이 있습니까? – CodeWarrior
더 많은 코드를 표시 할 수 있습니까? 예를 들어 파일 패킷 내용을 어떻게 읽으십니까? 또한이 오프라인을 읽고 있습니까? – MethodMan
네, 디스크에있는 모든 반복 파일을 액세스하고 아무도 내가 파일을 액세스하는 동안 파일을 버퍼에 보관할 수 있지만 다른 파일을 500 개 재생하고 싶은 경우에는 어떻게해야합니까? – user1710944