Loading

NOM

       rtime - Lire l’heure sur un serveur distant.

SYNOPSIS

       #include <rpc/des_crypt.h>

       int rtime(struct sockaddr_in *addrp, struct rpc_timeval *timep,
                 struct rpc_timeval *timeout);

       Cette fonction utilise le protocole Time Serveur décrit dans la RFC 868
       pour lire l’heure sur une machine distante.

       Le protocole Time Serveur donne l’heure en secondes écoulées depuis  le
       1er  janvier  1900  à  00:00:00  UTC,  et  cette  fonction soustrait la
       constante nécessaire pour convertir le résultat  en  secondes  écoulées
       depuis  le  1er  janvier  1970 à 00:00:00 UTC, début des dates de l’ère
       Unix (Epoch).

       Si timeout est non NULL, le port UDP/time (37) est  utilisé,  sinon  le
       port TCP/time (37) est utilisé.

VALEUR RENVOYÉE

       Si  elle  réussit,  cette  fonction  renvoie  zéro et la valeur 32 bits
       obtenue est stockée dans timep->tv_sec. En cas d’échec, elle renvoie -1
       et errno contient le code d’erreur.

ERREURS

       Toutes   les  erreurs  pour  les  fonctions  sous-jacentes  (sendto(2),
       poll(2), recvfrom(2), connect(2), read(2)) peuvent se produire, avec en
       outre :

       EIO    Le nombre d’octets reçus n’est pas 4.

       ETIMEDOUT
              Le délai indiqué en second argument a expiré.

NOTES

       Seul IPv4 est supporté.

       Certaines  versions  de  in.timed supportent uniquement TCP. Essayez le
       programme d’exemple avec use_tcp fixé à 1.

       La libc5 utilise le prototype
       int rtime(struct sockaddr_in *, struct timeval *, struct timeval *);
       et requiert <sys/time.h> à la place de <rpc/auth_des.h>.

BOGUES

       rtime() dans la glibc  2.2.5  et  les  précédentes  ne  fonctionne  pas
       correctement sur les machines 64 bits.

EXEMPLE

       Cet  exemple  demande que le port 37 soit ouvert et actif. Vérifiez que
       l’entrée time dans /etc/inetd.conf ne soit pas commentée.
       Le  programme  se  connecte  sur  un  hôte  nommé  « linux ».  Utiliser
       «localhost »  ne  fonctionne  pas.  Le  résultat  est l’heure locale de
       l’ordinateur « linux ».

       #include <stdio.h>
       #include <stdlib.h>
       #include <errno.h>
       #include <string.h>
       #include <time.h>
       #include <rpc/auth_des.h>
       #include <netdb.h>

       int use_tcp = 0;
       char *servername = "linux";

       int
       main(void)
       {
           struct sockaddr_in name;
           struct rpc_timeval time1 = {0,0};
           struct rpc_timeval timeout = {1,0};
           struct hostent *hent;
           int ret;

           memset((char *) &name, 0, sizeof(name));
           sethostent(1);
           hent = gethostbyname(servername);
           memcpy((char *) &name.sin_addr, hent->h_addr, hent->h_length);

           ret = rtime(&name, &time1, use_tcp ? NULL : &timeout);
           if (ret < 0)
               perror("rtime error");
           else
               printf("%s\n", ctime((time_t *) &time1.tv_sec));

           exit(EXIT_SUCCESS);
       }

VOIR AUSSI

       ntpdate(1), inetd(8)

COLOPHON

       Cette page fait partie de  la  publication  3.23  du  projet  man-pages
       Linux.  Une description du projet et des instructions pour signaler des
       anomalies      peuvent      être       trouvées       à       l’adresse
       http://www.kernel.org/doc/man-pages/.

TRADUCTION

       Cette  page  de  manuel  a  été  traduite et mise à jour par Christophe
       Blaess <http://www.blaess.fr/christophe/> entre 1996 et 2003, puis  par
       Alain  Portal  <aportal AT univ-montp2 DOT fr> jusqu’en 2006, et mise à
       disposition sur http://manpagesfr.free.fr/.

       Les mises à jour et corrections de la version présente dans Debian sont
       directement         gérées         par         Nicolas         François
       <nicolas.francois@centraliens.net>   et   l’équipe    francophone    de
       traduction de Debian.

       Veuillez   signaler   toute   erreur   de   traduction  en  écrivant  à
       <debian-l10n-french@lists.debian.org> ou par un rapport de bogue sur le
       paquet manpages-fr.

       Vous  pouvez  toujours avoir accès à la version anglaise de ce document
       en utilisant la commande « man -L C <section> <page_de_man> ».