Scroll to navigation

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)). بالإضافة إلى ذلك:

عدد البايتات المُعادة ليس 4.
انتهى وقت الانتظار كما هو مُعرَّف في timeout.

السمات

للاطلاع على شرح للمصطلحات المستخدمة في هذا القسم، انظر 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 صفحات دليل لينكس (لم تصدر بعد)