私は、MACアドレスに基づいて、パケットを受信してPCの他のポートに送信するプログラムを作成しています(他のポートも同じことを行っており、取得したものも送信します)。しかし、私がこのようにデバイスを開くと:
device_port1.Open(DeviceMode.Promiscuous);
次に、1つのポートでパケットを送信すると、同じポートが受信したのと同じパケットを取得します。そして、両方のアダプターが同じことをしているとき、それらはお互いに1つのパケットを何度も送信しています。
どうすればこれを止めることができますか?私は試した
device_port1.Open(OpenFlags.NoCaptureLocal, 1000);
しかし、それはそのプログラムを介して何も送信していませんでした(そしてそれは役に立たないです)。
これはコードです:
device_port0 = devices[pole[0]];
device_port0.OnPacketArrival += new SharpPcap.PacketArrivalEventHandler(device_OnPacketArrival_port0);
//device_port0.Open(OpenFlags.NoCaptureLocal, 1000);
device_port0.Open(DeviceMode.Promiscuous);
device_port0.StartCapture();
そしてonPacketArrival
private void device_OnPacketArrival_port0(object sender, CaptureEventArgs packet)
{
device_port1 = devices[pole[1]];
device_port1.Open();
try
{
device_port1.SendPacket(packet.Packet.Data);
}
catch (Exception ee)
{
Console.Writeline("Exception: " + ee.Message);
}
}
そして、port1でも同じです。それは彼が得たものを送るだけであり、それがループの理由です。