本文整理汇总了C#中Handler.GetBytes方法的典型用法代码示例。如果您正苦于以下问题:C# Handler.GetBytes方法的具体用法?C# Handler.GetBytes怎么用?C# Handler.GetBytes使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Handler
的用法示例。
在下文中一共展示了Handler.GetBytes方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: CreatePacketData
private List<PacketData> CreatePacketData(PacketData packetData, Handler layer3Handler, Value[] parameterArray, out IPHeader baseIPHeader, out IPPacketIdentifier id)
{
const int ipMtu = 1500;
var list = new List<PacketData>();
var ipHeader = (IPHeader)layer3Handler.Build(parameterArray);
baseIPHeader = ipHeader;
var headerLength = ipHeader.VersionIHL * 5;
ipHeader.TotalLength = (ushort)((ipHeader.VersionIHL * 5) + packetData.Length);
id = CreateIPPacketIdentifier(ipHeader);
ipHeader.Identification = id.Key;
var remainingData = packetData.Data;
var totalTransmitCount = remainingData.Count;
ushort fragmentOffset = 0;
while (remainingData.Count > 0)
{
if (remainingData.Count + headerLength > ipMtu)
{
var firstFragmentSize = ipMtu - ipHeader.InternetHeaderLength;
var blockCount = (int)Math.Floor((double)firstFragmentSize / 8);
var copyCount = blockCount * 8;
var pendingTransmitData = new List<byte>(remainingData.GetRange(0, copyCount));
remainingData = new List<byte>(remainingData.GetRange(copyCount, remainingData.Count - copyCount));
ipHeader.FlagsFragmentOffset = (ushort)((fragmentOffset >> 3) | 0x2000);
Log.Write("SYSTEM", "IPFRAGMENT", fragmentOffset.ToString());
fragmentOffset += (ushort)copyCount;
ipHeader.TotalLength = (ushort)((ipHeader.VersionIHL * 5) + copyCount);
//++ contains MF bit
//ipHeader.FlagsFragmentOffset = (ushort)(ipHeader.FlagsFragmentOffset << 3);
var segmentData = PacketData.Create(pendingTransmitData);
segmentData = layer3Handler.GetBytes(ipHeader, segmentData);
list.Add(segmentData);
}
else
{
var pendingTransmitData = remainingData;
ipHeader.FlagsFragmentOffset = (ushort)(fragmentOffset >> 3);
//ipHeader.FlagsFragmentOffset = (ushort)(fragmentOffset);
Log.Write("SYSTEM", "IPFRAGMENT", fragmentOffset.ToString());
//ipHeader.FlagsFragmentOffset = (ushort)(ipHeader.FlagsFragmentOffset << 3);
ipHeader.TotalLength = (ushort)((ipHeader.VersionIHL * 5) + remainingData.Count);
var segmentData = PacketData.Create(pendingTransmitData);
segmentData = layer3Handler.GetBytes(ipHeader, segmentData);
list.Add(segmentData);
remainingData.Clear();
}
}
return list;
}