【发布时间】:2012-10-27 16:14:49
【问题描述】:
如何使用 pcapdotnet 将一个数据包分成两个数据包?这是我试过的,不知道对不对:
public IEnumerable<Packet> splitPacket(Packet packet)
{
EthernetLayer ethernet = (EthernetLayer)packet.Ethernet.ExtractLayer();
IpV4Layer ipV4Layer = (IpV4Layer)packet.Ethernet.IpV4.ExtractLayer();
DateTime packetTimestamp = packet.Timestamp;
ILayer payload = packet.Ethernet.IpV4.Payload.ExtractLayer();
IpV4Fragmentation.Equals(packet, packet);
yield return PacketBuilder.Build(packetTimestamp, ethernet, ipV4Layer, payload);
}
【问题讨论】:
-
不确定你想如何分割它,但你的方法的签名返回一个
Packet,所以我猜你只是创建一个。您可能想返回一个数据包列表,可能吗?还是IEnumerable<Packet>? -
是的,这是错误的,但我的问题是其余的是否还可以?
-
嗯,您正在构建一个数据包,并返回一个数据包。我不知道您所说的“拆分数据包”是什么意思。怎么拆分?
-
我更新了我的代码,但我不知道如何构建和返回 IEnumerable
,我使用 IpV4Fragmentation 属性拆分数据包 -
但是
IpV4Fragmentation.Equals是做什么的?如果两个数据包相等,这不是只返回true吗?无论如何,你想对这些数据包做什么,立即发送它们?