EFBTracker/Program.cs

61 lines
1.7 KiB
C#

using System.Net;
using System.Net.Sockets;
using System.Text;
bool done = false;
int listenPort = 49003;
using(UdpClient listener = new UdpClient(listenPort))
{
IPEndPoint listenEndPoint = new IPEndPoint(2130706433, listenPort);
while(!done)
{
byte[] receivedData = listener.Receive(ref listenEndPoint);
Console.Clear();
Console.WriteLine("Received broadcast message from client {0}", listenEndPoint.ToString());
Console.WriteLine("Decoded data is:");
//Console.WriteLine(Encoding.ASCII.GetString(receivedData));
Console.WriteLine(BitConverter.ToString(receivedData));
var pos = 0;
var header = Encoding.UTF8.GetString(receivedData, pos, 4);
pos += 5; // Including tailing 0
if (header == "DATA") // Ignore other messages
{
while (pos < receivedData.Length)
{
var id = BitConverter.ToInt32(receivedData, pos);
pos += 4;
try
{
var value = BitConverter.ToSingle(receivedData, pos);
pos += 4;
// var localDataRefs = DataRefs.ToArray();
// foreach (var dr in localDataRefs)
// if (dr.Update(id, value))
// OnDataRefReceived?.Invoke(dr);
Console.WriteLine($"Header: {header} Value: {value}");
}
catch (ArgumentException ex)
{
}
catch (Exception ex)
{
var error = ex.Message;
Console.WriteLine(error);
}
}
}
}
}