Scroll to navigation

rtime(3) Library Functions Manual rtime(3)

NUME

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

BIBLIOTECA

Biblioteca C standard (libc, -lc)

REZUMAT

#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:

Numărul de octeți returnat nu este 4.
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 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.

20 iulie 2023 Pagini de manual de Linux 6.05.01