table of contents
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)
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:
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.
2 mai 2024 | Pagini de manual Linux (nepublicate) |