.\" -*- coding: UTF-8 -*- '\" t .\" Copyright 2003 walter harms (walter.harms@informatik.uni-oldenburg.de) .\" .\" SPDX-License-Identifier: GPL-1.0-or-later .\" .\" Modified 2003-04-04 Walter Harms .\" .\" .\" Slightly polished, aeb, 2003-04-06 .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH rtime 3 "31 октября 2023 г." "Linux man\-pages 6.06" .SH ИМЯ rtime \- получение времени с удалённого узла .SH LIBRARY Standard C library (\fIlibc\fP, \fI\-lc\fP) .SH СИНТАКСИС .nf \fB#include \fP .P \fBint rtime(struct sockaddr_in *\fP\fIaddrp\fP\fB, struct rpc_timeval *\fP\fItimep\fP\fB,\fP \fB struct rpc_timeval *\fP\fItimeout\fP\fB);\fP .fi .SH ОПИСАНИЕ Для получения времени с удалённого компьютера функция использует протокол Time Server Protocol, описанный в RFC\ 868. .P Time Server Protocol возвращает время в секундах начиная с 1 января 1900 года 00:00:00 UTC. Данная функция самостоятельно вычитает подходящую константу для того, чтобы преобразовать результат в секундах от начала Эпохи \(em 1970\-01\-01 00:00:00 +0000 (UTC). .P Если \fItimeout\fP не равно NULL, то будет использоваться сокет udp/time (порт 37), иначе \(em сокет tcp/time (порт 37). .SH "ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ" On success, 0 is returned, and the obtained 32\-bit time value is stored in \fItimep\->tv_sec\fP. In case of error \-1 is returned, and \fIerrno\fP is set to indicate the error. .SH ОШИБКИ Могут возникнуть все ошибки задействованных в работе функций (\fBsendto\fP(2), \fBpoll\fP(2), \fBrecvfrom\fP(2), \fBconnect\fP(2), \fBread\fP(2)), а также: .TP \fBEIO\fP Количество возвращённых байт не равно 4. .TP \fBETIMEDOUT\fP Время ожидания, указанное в таймауте, превышено. .SH АТРИБУТЫ Описание терминов данного раздела смотрите в \fBattributes\fP(7). .TS allbox; lbx lb lb l l l. Интерфейс Атрибут Значение T{ .na .nh \fBrtime\fP() T} Безвредность в нитях MT\-Safe .TE .SH ЗАМЕЧАНИЯ Поддерживается только IPv4. .P .\" .P .\" Libc5 uses the prototype .\" .P .\" .nf .\" int rtime(struct sockaddr_in *, struct timeval *, struct timeval *); .\" .fi .\" .P .\" and requires .\" .I .\" instead of .\" .IR . Некоторые версии \fIin.timed\fP поддерживают только TCP. Попробуйте пример программы с установленной в 1 значением \fIuse_tcp\fP. .SH ДЕФЕКТЫ \fBrtime\fP() в glibc 2.2.5 и ниже на 64\-битных компьютерах работает некорректно. .SH ПРИМЕРЫ Для этого примера требуется поднятие и открытие порта 37. Вы можете проверить это, убедившись в том, что в файле \fI/etc/inetd.conf\fP запись time раскомментирована. .P Программа подключается к компьютеру с именем «linux». Использование «localhost» не сработает. В качестве результата будет возвращено локальное время компьютера «linux». .P .\" SRC BEGIN (rtime.c) .EX #include #include #include #include #include #include \& #include \& 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\en", ctime(&t)); } \& exit(EXIT_SUCCESS); } .EE .\" SRC END .SH "СМ. ТАКЖЕ" .\" .BR netdate (1), .\" .BR rdate (1), \fBntpdate\fP(1), \fBinetd\fP(8) .PP .SH ПЕРЕВОД Русский перевод этой страницы руководства был сделан aereiae , Azamat Hackimov , Dmitriy S. Seregin , Katrin Kutepova , Lockal , Yuri Kozlov , Баринов Владимир и Иван Павлов . .PP Этот перевод является бесплатной документацией; прочитайте .UR https://www.gnu.org/licenses/gpl-3.0.html Стандартную общественную лицензию GNU версии 3 .UE или более позднюю, чтобы узнать об условиях авторского права. Мы не несем НИКАКОЙ ОТВЕТСТВЕННОСТИ. .PP Если вы обнаружите ошибки в переводе этой страницы руководства, пожалуйста, отправьте электронное письмо на .MT man-pages-ru-talks@lists.sourceforge.net .ME .