// Internal Methods /// <summary> /// A SNTPData that is used by a client to send to a server to request data. /// </summary> internal static SNTPData GetClientRequestPacket(VersionNumber versionNumber) { SNTPData packet = new SNTPData(); packet.Mode = Mode.Client; packet.VersionNumber = versionNumber; packet.TransmitDateTime = DateTime.Now.ToUniversalTime(); return(packet); }
/// <summary> /// Worker thread for processing received TSIP packets /// </summary> private void WorkerThread() { while (true) { var sender = new IPEndPoint(IPAddress.Any, 0); EndPoint senderRemote = sender; var request = new SNTPData(); try { _socket.ReceiveFrom(request, ref senderRemote); } catch (Exception ex) { // Swallow the exception } try { if (request.Mode == Mode.Client) { var response = new SNTPData { LeapIndicator = LeapIndicator.NoWarning, VersionNumber = request.VersionNumber, Mode = Mode.Server, Stratum = Stratum.Primary, PollInterval = 8, Precision = 0.012345, ReferenceIdentifier = "GPS", ReferenceDateTime = DateTime.UtcNow.AddMilliseconds(-1000), ReceiveDateTime = DateTime.UtcNow, TransmitDateTime = DateTime.UtcNow }; //response.RootDelay = 0; //response.RootDispersion = 0; // Copy the Transmit Date to the Originate Date for (var i = 24; i <= 31; i++) { response.Data[i] = request.Data[i + 16]; } // Sent return data var sent = _socket.SendTo(response, senderRemote); } } catch { // Swallow the exception } } }
// Internal Methods /// <summary> /// A SNTPData that is used by a client to send to a server to request data. /// </summary> internal static SNTPData GetClientRequestPacket(VersionNumber versionNumber) { SNTPData packet = new SNTPData(); packet.Mode = Mode.Client; packet.VersionNumber = versionNumber; packet.TransmitDateTime = DateTime.Now.ToUniversalTime(); return packet; }