rtime(3)

NUME
rtime - obține ora de la o mașină de la distanță

BIBLIOTECA
Biblioteca C standard (libc, -lc)

SINOPSIS
#include <rpc/auth_des.h>

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

DESCRIERE
Această funcție utilizează protocolul Time Server Protocol (protocolul serverului de timp), așa cum este descris în RFC 868, pentru a obține ora de la o mașină la distanță.

Protocolul serverului de timp oferă timpul în secunde de la 00:00:00 UTC, 1 ianuarie 1900, iar această funcție scade constanta corespunzătoare pentru a converti rezultatul în secunde de la Epocă, 1970-01-01 00:00:00:00 +0000 (UTC).

Atunci când timeout este diferit de NULL, se utilizează soclul udp/time (portul 37). În caz contrar, se utilizează soclul tcp/time (portul 37).

VALOAREA RETURNATĂ
În caz de succes, se returnează 0, iar valoarea de timp pe 32 de biți obținută este stocată în timep->tv_sec. În caz de eroare, se returnează -1, iar errno este configurată pentru a indica eroarea.

ERORI-IEȘIRE
Pot apărea toate erorile pentru funcțiile de bază (sendto(2), poll(2), recvfrom(2), connect(2), read(2)). În plus:

EIO Numărul de octeți returnat nu este 4.

ETIMEDOUT
    Timpul de așteptare definit în „timeout” a expirat.

ATRIBUTE
Pentru o explicație a termenilor folosiți în această secțiune, a se vedea attributes(7).
Interfață | Atribut | Valoare
rtime() | Siguranța firelor | MT-Safe

NOTE
Doar protocolul IPv4 este acceptat.

Unele versiuni in.timed acceptă numai TCP. Încercați programul de exemplu cu use_tcp fixată la 1.

ERORI
rtime() în glibc 2.2.5 și versiunile anterioare nu funcționează corect pe mașinile pe 64 de biți.

EXEMPLE
Acest exemplu necesită ca portul 37 să fie activat și deschis. Puteți verifica dacă intrarea de timp din /etc/inetd.conf nu este comentată.

Programul se conectează la un calculator numit „linux”. Utilizarea „localhost” nu funcționează. Rezultatul este ora locală a calculatorului „linux”.

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

    #include <rpc/auth_des.h>

    static int use_tcp = 0;
    static const char servername[] = "linux";

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

        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("eroare rtime");
        else {
            t = time1.tv_sec;
            printf("%s\n", ctime(&t));
        }

        exit(EXIT_SUCCESS);
    }

CONSULTAȚI ȘI
ntpdate(1), inetd(8)

TRADUCERE
Traducerea în limba română a acestui manual a fost făcută de Remus-Gabriel Chelu <remusgabriel.chelu@disroot.org>

Această traducere este documentație gratuită; citiți Licența publică generală GNU Versiunea 3 (https://www.gnu.org/licenses/gpl-3.0.html) sau o versiune ulterioară cu privire la condiții privind drepturile de autor. NU se asumă NICIO RESPONSABILITATE.

Dacă găsiți erori în traducerea acestui manual, vă rugăm să trimiteți un e-mail la translation-team-ro@lists.sourceforge.net.