我正在制作应该接收数据包并将其发送到 PC 上的另一个端口的程序(其他端口也在做同样的事情,也发送他得到的东西),基于 MAC 地址。但是当我这样打开设备时:
device_port1.Open(DeviceMode.Promiscuous);
然后在一个端口上发送一些数据包,同一个端口得到与接收到的相同的数据包。当两个适配器都在做同样的事情时,它们会一遍又一遍地互相发送一个数据包。
我怎么能阻止这个?我试过
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上是一样的。它只是发送他得到的东西,这就是循环的原因。