| rtime(3) | Library Functions Manual | rtime(3) |
الاسم¶
rtime - الحصول على الوقت من جهاز بعيد
المكتبة¶
مكتبة سي المعيارية (libc، -lc)
موجز¶
#include <rpc/auth_des.h>
int rtime(struct sockaddr_in *addrp, struct rpc_timeval *timep,
struct rpc_timeval *timeout);
الوصف¶
تستخدم هذه الدالة بروتوكول مخدم الوقت كما هو موصوف في RFC 868 للحصول على الوقت من جهاز بعيد.
يعطي بروتوكول مخدم الوقت الوقت بالثواني منذ 00:00:00 UTC، 1 يناير 1900، وتطرح هذه الدالة الثابت المناسب لتحويل النتيجة إلى ثوانٍ منذ الحقبة، 1970-01-01 00:00:00 +0000 (UTC).
عندما يكون timeout غير NULL، يُستخدم مقبس udp/time (المنفذ 37). وإلا، يُستخدم مقبس tcp/time (المنفذ 37).
قيمة الإرجاع¶
عند النجاح، يُعاد 0، وتُخزَّن قيمة الوقت 32-بت التي تم الحصول عليها في timep->tv_sec. في حالة الخطأ، يُعاد -1، ويُضبط errno للإشارة إلى الخطأ.
الأخطاء¶
يمكن أن تحدث جميع أخطاء الدوال الأساسية (sendto(2)، poll(2)، recvfrom(2)، connect(2)، read(2)). بالإضافة إلى ذلك:
السمات¶
للاطلاع على شرح للمصطلحات المستخدمة في هذا القسم، انظر attributes(7).
| الواجهة | السمة | القيمة |
| rtime() | سلامة الخيوط | MT-Safe |
ملاحظات¶
يُدعم IPv4 فقط.
تدعم بعض إصدارات in.timed TCP فقط. جرب البرنامج المثال مع ضبط use_tcp إلى 1.
العلل¶
لا تعمل rtime() في glibc 2.2.5 والإصدارات الأقدم بشكل صحيح على الأجهزة 64-بت.
أمثلة¶
يتطلب هذا المثال أن يكون المنفذ 37 قيد التشغيل ومفتوحًا. يمكنك التحقق من أن إدخال الوقت داخل /etc/inetd.conf ليس معلقًا.
يتصل البرنامج بجهاز يُدعى "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)
ترجمة¶
تُرجمت هذه الصفحة من الدليل بواسطة زايد السعيدي <zayed.alsaidi@gmail.com>
هذه الترجمة هي وثيقة مجانية؛ راجع رخصة جنو العامة الإصدار 3 أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات.
إذا وجدت أي أخطاء في ترجمة صفحة الدليل هذه، يرجى إرسال بريد إلكتروني إلى قائمة بريد المترجمين: kde-l10n-ar@kde.org.
| 8 فبراير 2026 | صفحات دليل لينكس (لم تصدر بعد) |