Пример #1
0
        // Sender
        static void sender()
        {
            DateTime now;
            DateTime last = System.DateTime.Now;

            UdpClient client = new UdpClient();

            client.Connect(new IPEndPoint(IPAddress.Parse(serverIP), serverPort));

            while (true)
            {
                now = System.DateTime.Now;
                if (now >= last.AddMilliseconds(senderDelay) && buffer.Count() > 0)
                {
                    try
                    {
                        Console.WriteLine("\tSending Package at {0}", now.ToString());
                        TrackerPkg package  = buffer.TryPeek();
                        byte[]     pkgBytes = package.GetBytes();
                        client.Send(pkgBytes, pkgBytes.Length);
                    }
                    catch (System.Exception)
                    {
                        // See: https://github.com/dotnet/runtime/issues/923
                        Console.WriteLine("\t\t(Sending aborted by O.S.)");
                    }
                    last = last.AddMilliseconds(locatorDelay);
                }
            }
        }
Пример #2
0
 // Listener
 static void listener()
 {
     while (true)
     {
         UdpClient  client        = new UdpClient(9999);
         IPEndPoint remoteIp      = new IPEndPoint(IPAddress.Parse(serverIP), 0);
         byte[]     receivedBytes = client.Receive(ref remoteIp);
         client.Close();
         TrackerPkg response = new TrackerPkg(receivedBytes);
         TrackerPkg package  = buffer.TryPeek();
         if (package.type == 1 && package.message_id == response.message_id)
         {
             buffer.TryDequeue();
         }
         Console.WriteLine("\tLast package delivered sucessfully (Removed from queue).");
     }
 }
Пример #3
0
        // Locator
        static void locator()
        {
            DateTime now;
            DateTime last = System.DateTime.Now;

            while (true)
            {
                now = System.DateTime.Now;
                if (now >= last.AddMilliseconds(locatorDelay))
                {
                    Console.WriteLine("\tStoring Location at {0}", now.ToString());
                    string     location  = GPSMngr.getLocation();
                    String     timeStamp = now.ToString("yyyyMMddHHmmssffff");
                    TrackerPkg package   = new TrackerPkg(0, deviceNumber, timeStamp, location);
                    buffer.Enqueue(package);
                    last = last.AddMilliseconds(locatorDelay);
                }
            }
        }
        // Saver
        static void saver()
        {
            UdpClient client = new UdpClient();

            while (true)
            {
                if (buffer.Count > 0)
                {
                    // Decoding the stream
                    TrackerPkg package  = new TrackerPkg(buffer.Dequeue());
                    IPEndPoint remoteIp = remoteSockets.Dequeue();

                    // Printing the location
                    Console.WriteLine("\tLocation received from device {0}: {1}.", package.device, package.message);

                    // Sending confirmation
                    TrackerPkg response = new TrackerPkg(1, 0, package.device.ToString(), "");
                    byte[]     resBytes = response.GetBytes();
                    remoteIp.Port = 9999;
                    client.Send(resBytes, resBytes.Length, remoteIp);
                }
            }
        }