我遵循本教程PcapDotNet/Pcap。网但我会尝试构建一个像这个图片以太网帧一样的数据包。
private static Packet BuildEthernetPacket()
{
EthernetLayer ethernetLayer =
new EthernetLayer
{
Destination = new MacAddress("00:00:00:00:00:00"),
Source = new MacAddress("11:11:11:11:11:11"),
EtherType = EthernetType.None, // I select NONE for no IPV4 or ARP and so one protocole ...
};
PayloadLayer payloadLayer =
new PayloadLayer
{
Data = new Datagram(Encoding.ASCII.GetBytes("Hello stackoverflow")),
};
// The probleme it's here but the code build :
PacketBuilder builder = new PacketBuilder(ethernetLayer, payloadLayer);
return builder.Build(DateTime.Now);
}
Visual Studio社区检测到错误"无法从下一层(PcapDotNet.Packets.PayloadLayer)自动确定以太类型"&'系统PcapDotNet中的ArgumentException。数据包.dll
但如果我更改EthernetType。EthernetType无。IpV4或IpV6或ARP等等。没有问题,但我不想添加其他协议。
提前谢谢。
EtherType在数据包中不能真的是None。您应该将其设置为某个值。当设置为"无"(或未设置)时,Pcap。Net尝试使用下一层自动计算它。然而,代码中的下一层是PayloadLayer,它没有提供有关EtherType的信息。
基本上,EtherType应该说明应该如何解析以太网负载。如果你放入一些有效负载,应该有一种方法来解析它。