Provided by: manpages-fr_1.67.0-1_all bug

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);

DESCRIPTION

       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 à minuit, et cette  fonction  soustrait  la  constante
       nécessaire pour convertir le résultat en secondes écoulées depuis l’Ère
       Unix (01/01/1970 à minuit).

       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, poll,
       recvfrom, connect, read) peuvent se produite, avec en outre :

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

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

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 <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() {
         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", ctime((time_t *)&time1.tv_sec));

         return 0;
       }

NOTES

       Seul IPV4 est supporté.

       Certaines  versions  de  in.timed  supportent  uniquement  TCP. Essayez
       l’exemple précédent 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 les GlibC <= 2.2.5 ne fonctionne pas correctement sur  les
       machines 64-bits.

VOIR AUSSI

       netdate(1), ntpdate(1), rdate(1), inetd(8)

TRADUCTION

       Christophe Blaess, 2003.