38 lines
1.3 KiB
C#
38 lines
1.3 KiB
C#
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);
|
|
}
|
|
}
|
|
}
|