project-carbon/ProjectCarbon/Protocols/UdpProtocol.cs

38 lines
1.3 KiB
C#
Raw Normal View History

2015-06-29 20:48:49 -05:00
using System;
using System.Collections.Generic;
using System.Text;
namespace ProjectCarbon.Protocols
{
class UdpProtocol : IpSubProtocol
{
public UdpProtocol()
: base(Protocol.Udp, "UDP", "User Datagram Protocol")
{
}
public override void ProcessData(byte[] bufferData)
{
// The UDP protocol uses big-endian.
BigEndianConverter endianConverter = new BigEndianConverter();
// Read the header information
int sourcePort = endianConverter.ToUInt16(bufferData, 0);
int destinationPort = endianConverter.ToUInt16(bufferData, 2);
int length = endianConverter.ToUInt16(bufferData, 4);
int checksum = endianConverter.ToUInt16(bufferData, 6);
byte[] payload = new byte[length - 8];
// Copy the buffer
Array.Copy(bufferData, 8, payload, 0, length - 8);
// Add the properties
m_protocolProperties.Add("SourcePort", sourcePort);
m_protocolProperties.Add("DestinationPort", destinationPort);
m_protocolProperties.Add("Length", length);
m_protocolProperties.Add("Checksum", checksum);
m_protocolProperties.Add("Payload", payload);
}
}
}