我建立了一个用于执行IGMP操作的库。现在,愚蠢的是,我的图书馆也会进行监控,以确保其他人仍然是小组的成员。
IGMP在较低级别执行完全相同的操作。分离消息,轮询路由器,它仍然是同一组的一部分,整个事情。我刚刚重复了所有相同的工作,而且可能不那么强大。
如果我可以利用这些数据包,我可以让一切变得更清洁(我不会重新发明轮子)。
任何人都有这方面的经验吗?也许创造某种疯狂的插座?我不想使用libpcap。我不认为语言很重要,只要它可以在Windows / Linux上使用套接字
答案 0 :(得分:1)
var buffer = new byte[65536];
var s = new Socket(AddressFamily.InterNetwork, SocketType.Raw, ProtocolType.Igmp); // filter out non IGMP
byte[] one = BitConverter.GetBytes(1);
s.Bind(new IPEndPoint(IPAddress.Parse("192.168.1.148"), 0)); // Which interface to listen on
s.IOControl(IOControlCode.ReceiveAll, one, one); // enter promiscuous mode
s.Recieve(buffer); // get yourself some data (BeginRecieve didn't seem to work here)
然后用缓冲区做一些事情。如果你在wireshark中搜索,你可以看到数据包崩溃