Provided by: manpages-fr-dev_3.65d1p1-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  à
       00:00:00  UTC,  et  cette  fonction  soustrait  la  constante nécessaire pour convertir le
       résultat en secondes écoulées depuis l'époque, 1er janvier 1970 à 00:00:00 (UTC).

       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 définie à 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>

       static int use_tcp = 0;
       static 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(&name, 0, sizeof(name));
           sethostent(1);
           hent = gethostbyname(servername);
           memcpy(&name.sin_addr, hent->h_addr, hent->h_length);

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

           exit(EXIT_SUCCESS);
       }

VOIR AUSSI

       ntpdate(1), inetd(8)

COLOPHON

       Cette  page  fait partie de la publication 3.65 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

       Depuis    2010,    cette   traduction   est   maintenue   à   l'aide   de   l'outil   po4a
       <http://po4a.alioth.debian.org/> par l'équipe de traduction francophone au sein du  projet
       perkamon <http://perkamon.alioth.debian.org/>.

       Christophe    Blaess    <http://www.blaess.fr/christophe/>   (1996-2003),   Alain   Portal
       <http://manpagesfr.free.fr/> (2003-2006). Nicolas  François  et  l'équipe  francophone  de
       traduction de Debian (2006-2009).

       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> ».