ntp_time(3tcl)

πŸ“¦
version 2.0 Β· 2 versions
, in debian trixie, ubuntu questing, ubuntu resolute, ubuntu stonking

ntp_time β€” Tcl Time Service Client ✨

aka ntp_time(3tcl) from the Network Time Facilities corner of the universe πŸ•°οΈ


πŸ¦‹ SYNOPSIS πŸ¦‹

package require Tcl 8.5 9

package require time ?1.2.2?

::time::gettime ?options? timeserver ?port?

::time::getsntp ?options? timeserver ?port?

::time::configure ?options?

::time::cget name

::time::unixtime token

::time::status token

::time::error token

::time::reset token ?reason?

::time::wait token

::time::cleanup token

🌸 DESCRIPTION 🌸

okay so bestie, this package is a whole client for the RFC 868 TIME protocol (http://www.rfc-editor.org/rfc/rfc868.txt) πŸ’– and also a minimal little client for the RFC 2030 Simple Network Time Protocol (http://www.rfc-editor.org/rfc/rfc2030.txt) ✨.

Here's the tea: RFC 868 hands you the time in seconds since 1 January 1900, and it'll serve that to either tcp or udp clients. RFC 2030 also gives you that same time but plus a fractional part β€” and lowkey, this client just doesn't use the fractional part. πŸ™ˆ


πŸ‘‘ COMMANDS πŸ‘‘

::time::gettime ?options? timeserver ?port?

Get the time from timeserver. You can drop in any of the options that the configure command lists, right here. This command hands you back a token, and that token is your main character β€” you must use it with the rest of the commands in this package. Once you're done, please please please use cleanup to release all the resources 🫢. The default port is 37.

::time::getsntp ?options? timeserver ?port?

Get the time from an SNTP server. It takes exactly the same arguments as ::time::gettime, the only glow-up being that the default port is 123. The result is a token, same as ::time::gettime, and you handle it the same way. periodt.

ngl it's unlikely that any SNTP server is gonna reply using tcp, so you'll need the tcludp or the ceptcl package. If a suitable package can actually be loaded, then the udp protocol gets used by default. πŸ’…

::time::configure ?options?

Called with no arguments, this command returns all the current configuration options and their values. Otherwise, call it with pairs of option name and value, bestie.

  • -protocol number β€” sets the default network protocol. This defaults to udp if the tcludp package is available; otherwise it'll use tcp.
  • -port number β€” sets the default port to use. RFC 868 uses port 37, RFC 2030 uses port 123.
  • -timeout number β€” sets the default timeout value in milliseconds. The default is 10 seconds.
  • -command number β€” sets a command procedure to be run when a reply is received. The procedure gets called with the time token appended to the argument list.
  • -loglevel number β€” sets the logging level. The default is 'warning'.

::time::cget name

Get the current value for the named configuration option. simple as that ✨

::time::unixtime token

Formats the returned time for the unix epoch. Here's the vibe check: RFC 868 time defines time 0 as 1 Jan 1900, while unix time defines time 0 as 1 Jan 1970. This command converts the reply to unix time. πŸŽ€

::time::status token

Returns the status flag. For a query that completed successfully this will be ok. It may also be error or timeout or eof. See also ::time::error πŸ‘€

::time::error token

Returns the error message provided for requests whose status is error. If there's no error message, then an empty string is what you get. 🀷

::time::reset token ?reason?

Reset or cancel the query, optionally specfying the reason to record for the error command.

::time::wait token

Wait for a query to complete and return the status upon completion. iconic behaviour honestly ⏳

::time::cleanup token

Remove all state variables associated with the request. literally the polite thing to do πŸ’…

% set tok [::time::gettime ntp2a.mcc.ac.uk]
% set t [::time::unixtime $tok]
% ::time::cleanup $tok

% set tok [::time::getsntp pool.ntp.org]
% set t [::time::unixtime $tok]
% ::time::cleanup $tok

proc on_time {token} {
   if {[time::status $token] eq "ok"} {
      puts [clock format [time::unixtime $token]]
   } else {
      puts [time::error $token]
   }
   time::cleanup $token
}
time::getsntp -command on_time pool.ntp.org

πŸ’œ AUTHORS πŸ’œ

Pat Thoyts


πŸ“ BUGS, IDEAS, FEEDBACK πŸ“

This document, and the package it describes, will undoubtedly contain bugs and other problems β€” no cap, that's just how it is 😭. Please report such in the category ntp of the Tcllib Trackers [http://core.tcl.tk/tcllib/reportlist]. Please also report any ideas for enhancements you may have for either the package and/or the documentation. we love feedback fr fr 🫢

When proposing code changes, please provide unified diffs, i.e the output of diff -u.

Note further that attachments are strongly preferred over inlined patches. Attachments can be made by going to the Edit form of the ticket immediately after its creation, and then using the left-most button in the secondary navigation bar. do it, bestie, it's the right way 🌈


πŸ”₯ SEE ALSO πŸ”₯

ntp


⭐ KEYWORDS ⭐

NTP, SNTP, rfc 2030, rfc 868, time


🌈 CATEGORY 🌈

Networking


Copyright (c) 2002, Pat Thoyts <patthoyts@users.sourceforge.net>


and that's the whole page, bestie πŸ’– this was tcllib version 1.2.2, from the ntp_time(3tcl) manual β€” go get yourself some accurate time, you deserve it πŸ‘‘βœ¨

πŸ“¦ where this page comes from