여러 네트워크 장치에서 패킷을 수신하고 다른 장치 (소프트웨어 허브와 같은)로 보낼 프로그램을 만들려고합니다. 나는 C#과 pcapdotnet을 사용하고있다. 이 간단한 방법은 기기에 통신을 캡처 :C# pcapdotnet ReceivePackets 콜백에서 장치 사용
public void sniff(LivePacketDevice device)
{
using(PacketCommunicator comm = device.Open(65536, PacketDeviceOpenAttributes.Promiscuous, 1000))
{
comm.ReceivePackets(0, printandsend);
}
}
콜백 메소드에서 "printandsend"나는 패킷의 출처 장치를 제외한 모든 기기에 패킷을 보내려고합니다. 패킷을 보낸 장치에서 패킷을 보내지 못하게하려면 어떤 장치 패킷이 왔는지 알아야합니다. 문제는 현재 사용 된 장치를 해당 콜백 메서드로 구문 분석하는 방법을 파악할 수 없다는 것입니다. 메서드 외부의 변수는 패킷 캡쳐가 동시에 여러 장치에서 사용되기 때문에 해결 방법이 아닙니다. 같은 시간에 장치를 캡쳐하는 것은 "스 니프"방법의 스레드를 생성하여 제공됩니다.
Packet packet;
While(true)
{
comm.ReceivePacket(out packet);
send(packet,device)
//this would send packet on every device except the one which is used as a parameter
}
문제는 내가이 해결 방법은 모든 패킷이 성공적으로 수신 및 전송됩니다 제공 할 수 있는지 확실하지 않다이다 :
방법 receivePacket를 사용하여 가능한 해결 방법이 있습니다.