Provided by: manpages-ru-dev_4.27.0-1_all bug

НАИМЕНОВАНИЕ

       rtime - получение времени с удалённого узла

БИБЛИОТЕКА

       Стандартная библиотека языка C (libc, -lc)

ОБЗОР

       #include <rpc/auth_des.h>

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

ОПИСАНИЕ

       Для получения времени с удалённого компьютера функция использует протокол Time Server Protocol, описанный
       в RFC 868.

       Time  Server  Protocol  возвращает  время  в  секундах  начиная с 1 января 1900 года 00:00:00 UTC. Данная
       функция самостоятельно вычитает подходящую константу для того, чтобы преобразовать результат  в  секундах
       от начала Эпохи — 1970-01-01 00:00:00 +0000 (UTC).

       Если  timeout  не  равно  NULL,  то будет использоваться сокет udp/time (порт 37), иначе — сокет tcp/time
       (порт 37).

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ

       On success, 0 is returned, and the obtained 32-bit time value is stored in  timep->tv_sec.   In  case  of
       error -1 is returned, and errno is set to indicate the error.

ОШИБКИ

       Могут   возникнуть  все  ошибки  задействованных  в  работе  функций  (sendto(2),  poll(2),  recvfrom(2),
       connect(2), read(2)), а также:

       EIO    Количество возвращённых байт не равно 4.

       ETIMEDOUT
              Время ожидания, указанное в таймауте, превышено.

АТРИБУТЫ

       Описание терминов данного раздела смотрите в attributes(7).
       ┌─────────────────────────────────────────────────────────────────────┬──────────────────────┬──────────┐
       │ ИнтерфейсАтрибутЗначение │
       ├─────────────────────────────────────────────────────────────────────┼──────────────────────┼──────────┤
       │ rtime()                                                             │ Безвредность в нитях │ MT-Safe  │
       └─────────────────────────────────────────────────────────────────────┴──────────────────────┴──────────┘

ПРИМЕЧАНИЯ

       Поддерживается только IPv4.

       Некоторые версии in.timed поддерживают только TCP.  Попробуйте  пример  программы  с  установленной  в  1
       значением use_tcp.

ОШИБКИ

       rtime() в glibc 2.2.5 и ниже на 64-битных компьютерах работает некорректно.

ПРИМЕРЫ

       Для  этого примера требуется поднятие и открытие порта 37. Вы можете проверить это, убедившись в том, что
       в файле /etc/inetd.conf запись time раскомментирована.

       Программа подключается к компьютеру с именем «linux». Использование «localhost» не сработает. В  качестве
       результата будет возвращено локальное время компьютера «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("rtime error");
           else {
               t = time1.tv_sec;
               printf("%s\n", ctime(&t));
           }

           exit(EXIT_SUCCESS);
       }

СМОТРИТЕ ТАКЖЕ

       ntpdate(1), inetd(8)

ПЕРЕВОД

       Русский  перевод  этой  страницы  руководства  разработал(и) aereiae <aereiae@gmail.com>, Azamat Hackimov
       <azamat.hackimov@gmail.com>,     Dmitriy     S.     Seregin     <dseregin@59.ru>,     Katrin     Kutepova
       <blackkatelv@gmail.com>,   Lockal   <lockalsash@gmail.com>,  Yuri  Kozlov  <yuray@komyakino.ru>,  Баринов
       Владимир, Иван Павлов <pavia00@gmail.com> и Kirill Rekhov <krekhov.dev@gmail.com>

       Этот перевод является свободной программной документацией; он распространяется на условиях  общедоступной
       лицензии  GNU  (GNU  General Public License - GPL, https://www.gnu.org/licenses/gpl-3.0.html версии 3 или
       более поздней) в отношении авторского права, но БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ.

       Если вы обнаружите какие-либо ошибки в переводе этой страницы руководства, пожалуйста, сообщите  об  этом
       разработчику(ам)   по   его(их)  адресу(ам)  электронной  почты  или  по  адресу  списка рассылки русских
       переводчиков.

Справочные страницы Linux 6.9.1                  15 июня 2024 г.                                        rtime(3)