44 lines
1011 B
C#
44 lines
1011 B
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Net;
|
|
using System.Net.Sockets;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using NmeaParser;
|
|
using NmeaParser.Messages;
|
|
|
|
namespace skyscraper5.NmeaSharpWrapper
|
|
{
|
|
internal class NmeaFromUdp : NmeaSharpWrapper
|
|
{
|
|
public NmeaFromUdp(string ipAdress, int port)
|
|
{
|
|
this.ipAdress = ipAdress;
|
|
this.port = port;
|
|
}
|
|
|
|
private string ipAdress;
|
|
private int port;
|
|
|
|
protected override void ProcessorThread()
|
|
{
|
|
UdpClient client = new UdpClient();
|
|
client.ExclusiveAddressUse = false;
|
|
client.Client.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, true);
|
|
client.Client.Bind(new IPEndPoint(IPAddress.Parse(this.ipAdress),this.port));
|
|
|
|
CancelRequest = false;
|
|
IPEndPoint endPoint = null;
|
|
while (!CancelRequest)
|
|
{
|
|
byte[] receive = client.Receive(ref endPoint);
|
|
string s = Encoding.ASCII.GetString(receive);
|
|
HandleNmeaMessage(s);
|
|
}
|
|
client.Close();
|
|
}
|
|
|
|
}
|
|
}
|