C# 根据MAC地址 监听IP数据报 这个没做过 MARK 等高人回复 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 监听MAC地址??如果是多网卡的话,感觉还是先找到对应MAC地址的IP地址,监听这个IP地址吧! 试试fastCSharpusing System;using fastCSharp;namespace fastCSharp.demo.rawSocketListener{ class Program { /// <summary> /// 原始套接字监听 /// </summary> /// <param name="args"></param> static void Main(string[] args) { using (fastCSharp.net.rawSocketListener rawSocket = new fastCSharp.net.rawSocketListener(getPacket, System.Net.IPAddress.Parse("192.168.1.100"))) { Console.ReadKey(); } } /// <summary> /// 数据包处理 /// </summary> /// <param name="data">数据包</param> private static void getPacket(subArray<byte> data) { fastCSharp.net.packet.ip ip4 = new fastCSharp.net.packet.ip(data); if (ip4.IsPacket) { switch (ip4.Protocol) { case fastCSharp.net.packet.ip.protocol.Icmp: fastCSharp.net.packet.icmp icmp = new fastCSharp.net.packet.icmp(ip4.Packet); if (icmp.IsPacket) { Console.WriteLine(ip4.Source.toHex8() + " -> " + ip4.Destination.toHex8() + " " + ip4.Protocol.ToString() + " " + icmp.Type.ToString() + " " + icmp.Code.ToString()); } else Console.WriteLine("Unknown"); break; case fastCSharp.net.packet.ip.protocol.Igmp: fastCSharp.net.packet.igmp igmp = new fastCSharp.net.packet.igmp(ip4.Packet); if (igmp.IsPacket) { Console.WriteLine(ip4.Source.toHex8() + " -> " + ip4.Destination.toHex8() + " " + ip4.Protocol.ToString()); } else Console.WriteLine("Unknown"); break; case fastCSharp.net.packet.ip.protocol.Tcp: fastCSharp.net.packet.tcp tcp = new fastCSharp.net.packet.tcp(ip4.Packet); if (tcp.IsPacket) { Console.WriteLine(ip4.Source.toHex8() + ":" + ((ushort)tcp.SourcePort).toHex() + " -> " + ip4.Destination.toHex8() + ":" + ((ushort)tcp.DestinationPort).toHex() + " " + ip4.Protocol.ToString()); } else Console.WriteLine("Unknown"); break; case fastCSharp.net.packet.ip.protocol.Udp: fastCSharp.net.packet.udp udp = new fastCSharp.net.packet.udp(ip4.Packet); if (udp.IsPacket) { Console.WriteLine(ip4.Source.toHex8() + ":" + ((ushort)udp.SourcePort).toHex() + " -> " + ip4.Destination.toHex8() + ":" + ((ushort)udp.DestinationPort).toHex() + " " + ip4.Protocol.ToString()); } else Console.WriteLine("Unknown"); break; default: Console.WriteLine(ip4.Source.toHex8() + " -> " + ip4.Destination.toHex8() + " " + ip4.Protocol.ToString()); break; } } else Console.WriteLine("Unknown"); } }} 新手求教 。C# 连接数据库问题。 关于成员方法怎么调用?(新手问题) c#连接数据库查询问题(分不够再加) 数据更新的问题!! 关于C++/CLI中的“类的方法重载” 有人用过sqlserver 2005里的CTE么,C#里要怎么用这个东西啊, 在C#中combobox两级联动 [菜鸟求助]请教一个多窗体的问题 200分求一个together for vs.net的注册机 如何从web页TreeView中获得一个节点的值 wlan上网前弹出的验证页面使用的是什么技术 VS中使用SQLITE,应该下载哪个文件呢
using fastCSharp;namespace fastCSharp.demo.rawSocketListener
{
class Program
{
/// <summary>
/// 原始套接字监听
/// </summary>
/// <param name="args"></param>
static void Main(string[] args)
{
using (fastCSharp.net.rawSocketListener rawSocket = new fastCSharp.net.rawSocketListener(getPacket, System.Net.IPAddress.Parse("192.168.1.100")))
{
Console.ReadKey();
}
}
/// <summary>
/// 数据包处理
/// </summary>
/// <param name="data">数据包</param>
private static void getPacket(subArray<byte> data)
{
fastCSharp.net.packet.ip ip4 = new fastCSharp.net.packet.ip(data);
if (ip4.IsPacket)
{
switch (ip4.Protocol)
{
case fastCSharp.net.packet.ip.protocol.Icmp:
fastCSharp.net.packet.icmp icmp = new fastCSharp.net.packet.icmp(ip4.Packet);
if (icmp.IsPacket)
{
Console.WriteLine(ip4.Source.toHex8() + " -> " + ip4.Destination.toHex8() + " " + ip4.Protocol.ToString() + " " + icmp.Type.ToString() + " " + icmp.Code.ToString());
}
else Console.WriteLine("Unknown");
break;
case fastCSharp.net.packet.ip.protocol.Igmp:
fastCSharp.net.packet.igmp igmp = new fastCSharp.net.packet.igmp(ip4.Packet);
if (igmp.IsPacket)
{
Console.WriteLine(ip4.Source.toHex8() + " -> " + ip4.Destination.toHex8() + " " + ip4.Protocol.ToString());
}
else Console.WriteLine("Unknown");
break;
case fastCSharp.net.packet.ip.protocol.Tcp:
fastCSharp.net.packet.tcp tcp = new fastCSharp.net.packet.tcp(ip4.Packet);
if (tcp.IsPacket)
{
Console.WriteLine(ip4.Source.toHex8() + ":" + ((ushort)tcp.SourcePort).toHex() + " -> " + ip4.Destination.toHex8() + ":" + ((ushort)tcp.DestinationPort).toHex() + " " + ip4.Protocol.ToString());
}
else Console.WriteLine("Unknown");
break;
case fastCSharp.net.packet.ip.protocol.Udp:
fastCSharp.net.packet.udp udp = new fastCSharp.net.packet.udp(ip4.Packet);
if (udp.IsPacket)
{
Console.WriteLine(ip4.Source.toHex8() + ":" + ((ushort)udp.SourcePort).toHex() + " -> " + ip4.Destination.toHex8() + ":" + ((ushort)udp.DestinationPort).toHex() + " " + ip4.Protocol.ToString());
}
else Console.WriteLine("Unknown");
break;
default:
Console.WriteLine(ip4.Source.toHex8() + " -> " + ip4.Destination.toHex8() + " " + ip4.Protocol.ToString());
break;
}
}
else Console.WriteLine("Unknown");
}
}
}