.\" -*- coding: UTF-8 -*- '\" t .\" %%%LICENSE_START(PUBLIC_DOMAIN) .\" This page is in the public domain. .\" %%%LICENSE_END .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH getnameinfo 3 "25 ديسمبر 2025" "صفحات دليل لينكس 6.18" .SH الاسم getnameinfo \- ترجمة العنوان إلى الاسم بطريقة مستقلة عن البروتوكول .SH المكتبة مكتبة سي المعيارية (\fIlibc\fP،\ \fI\-lc\fP) .SH موجز .nf \fB#include \fP \fB#include \fP .P \fBint getnameinfo(\fPsocklen_t hostlen, socklen_t servlen; \fB const struct sockaddr *restrict \fP\fIaddr\fP\fB, socklen_t \fP\fIaddrlen\fP\fB,\fP \fB char \fP\fIhost\fP\fB[_Nullable restrict \fP\fIhostlen\fP\fB],\fP \fB socklen_t \fP\fIhostlen\fP\fB,\fP \fB char \fP\fIserv\fP\fB[_Nullable restrict \fP\fIservlen\fP\fB],\fP \fB socklen_t \fP\fIservlen\fP\fB,\fP \fB int \fP\fIflags\fP\fB);\fP .fi .P .RS -4 متطلبات ماكروات اختبار الميزات لـ glibc (انظر \fBfeature_test_macros\fP(7)): .RE .P \fBgetnameinfo\fP(): .nf منذ glibc 2.22: _POSIX_C_SOURCE >= 200112L glibc 2.21 وما قبله: _POSIX_C_SOURCE .fi .SH الوصف دالة \fBgetnameinfo\fP() هي عكس \fBgetaddrinfo\fP(3): فهي تحول عنوان مقبس إلى مضيف وخدمة مقابلين، بطريقة مستقلة عن البروتوكول. تجمع بين وظائف \fBgethostbyaddr\fP(3) و \fBgetservbyport\fP(3)، ولكن على عكس تلك الدوال، فإن \fBgetnameinfo\fP() قابلة لإعادة الدخول وتسمح للبرامج بإزالة التبعيات بين IPv4 و IPv6. .P المعامل \fIaddr\fP هو مؤشر إلى بنية عنوان مقبس عامة (من النوع \fIsockaddr_in\fP أو \fIsockaddr_in6\fP) بحجم \fIaddrlen\fP تحتوي على عنوان IP ورقم المنفذ المدخلين. المعاملان \fIhost\fP و \fIserv\fP هما مؤشران إلى مخازن مخصصة من قبل المستدعي (بحجم \fIhostlen\fP و \fIservlen\fP على التوالي) يضع فيهما \fBgetnameinfo\fP() سلاسل محارف منتهية بقيمة خالية تحتوي على اسمي المضيف والخدمة على التوالي. .P يمكن للمستدعي تحديد أن اسم مضيف (أو اسم خدمة) غير مطلوب بتوفير معامل \fIhost\fP (أو \fIserv\fP) بقيمة NULL أو معامل \fIhostlen\fP (أو \fIservlen\fP) بقيمة صفر. ومع ذلك، يجب طلب واحد على الأقل من اسم المضيف أو اسم الخدمة. .P يعدل المعامل \fIflags\fP سلوك \fBgetnameinfo\fP() كما يلي: .TP \fBNI_NAMEREQD\fP إذا تم تعيينه، فسيتم إرجاع خطأ إذا تعذر تحديد اسم المضيف. .TP \fBNI_DGRAM\fP إذا تم تعيينه، فإن الخدمة تكون قائمة على الرزم (UDP) بدلاً من التيار (TCP). هذا مطلوب للمنافذ القليلة (512\[en]514) التي لها خدمات مختلفة لـ UDP و TCP. .TP \fBNI_NOFQDN\fP إذا تم تعيينه، فسيتم إرجاع جزء اسم المضيف فقط من اسم النطاق المؤهل بالكامل للمضيفين المحليين. .TP \fBNI_NUMERICHOST\fP .\" For example, by calling .\" .BR inet_ntop () .\" instead of .\" .BR gethostbyaddr (). .\" POSIX.1-2001 TC1 has NI_NUMERICSCOPE, but glibc doesn't have it. إذا تم تعيينه، فسيتم إرجاع الشكل الرقمي لاسم المضيف. (عند عدم تعيينه، سيحدث هذا أيضًا في حال تعذر تحديد اسم العقدة.) .TP \fBNI_NUMERICSERV\fP إذا تم تعيينه، فسيتم إرجاع الشكل الرقمي لعنوان الخدمة. (عند عدم تعيينه، سيحدث هذا أيضًا في حال تعذر تحديد اسم الخدمة.) .SS "إضافات إلى getnameinfo() لأسماء النطاقات المعولمة" بدءًا من glibc 2.3.4، تم توسيع \fBgetnameinfo\fP() للسماح بشكل انتقائي بتحويل أسماء المضيفين بشكل شفاف من وإلى تنسيق اسم النطاق المعولم (IDN) (انظر RFC 3490، \fIتعوليم أسماء النطاقات في التطبيقات (IDNA)\fP). تم تعريف ثلاث علامات جديدة: .TP \fBNI_IDN\fP إذا استُخدمت هذه العلامة، فإن الاسم الموجود في عملية البحث يُحوَّل من تنسيق IDN إلى ترميز المحلية إذا لزم الأمر. الأسماء التي تحتوي فقط على ASCII لا تتأثر بالتحويل، مما يجعل هذه العلامة قابلة للاستخدام في البرامج والبيئات الحالية. .TP \fBNI_IDN_ALLOW_UNASSIGNED\fP .TQ \fBNI_IDN_USE_STD3_ASCII_RULES\fP سيؤدي ضبط هذه الأعلام إلى تفعيل علم IDNA_ALLOW_UNASSIGNED (السماح بنقاط كود يونيكود غير المعينة) وعلم IDNA_USE_STD3_ASCII_RULES (فحص المخرجات للتأكد من أنها اسم مضيف متوافق مع STD3) على التوالي، لاستخدامهما في معالجة IDNA. .SH "قيمة الإرجاع" .\" FIXME glibc defines the following additional errors, some which .\" can probably be returned by getnameinfo(); they need to .\" be documented. .\" .\" #ifdef __USE_GNU .\" #define EAI_INPROGRESS -100 /* Processing request in progress. */ .\" #define EAI_CANCELED -101 /* Request canceled. */ .\" #define EAI_NOTCANCELED -102 /* Request not canceled. */ .\" #define EAI_ALLDONE -103 /* All requests done. */ .\" #define EAI_INTR -104 /* Interrupted by a signal. */ .\" #define EAI_IDN_ENCODE -105 /* IDN encoding failed. */ .\" #endif عند النجاح، يُعاد 0، وتُملأ أسماء العقدة والخدمة، إذا طُلبت، بسلسلة محارف منتهية بقيمة فارغة، وقد تُقتطع لتناسب أطوال المخازن المؤقتة المحددة. عند الخطأ، يُعاد أحد رموز الخطأ غير الصفرية التالية: .TP \fBEAI_AGAIN\fP لا يمكن حل الاسم في هذا الوقت. حاول مرة أخرى لاحقًا. .TP \fBEAI_BADFLAGS\fP المعامل \fIflags\fP له قيمة غير صالحة. .TP \fBEAI_FAIL\fP حدث خطأ غير قابل للاسترداد. .TP \fBEAI_FAMILY\fP لم يتم التعرف على عائلة العنوان، أو كان طول العنوان غير صالح للعائلة المحددة. .TP \fBEAI_MEMORY\fP نفدت الذاكرة. .TP \fBEAI_NONAME\fP لا يُحل الاسم للوسائط المقدمة. \fBNI_NAMEREQD\fP مضبوط ولا يمكن تحديد اسم المضيف، أو لم يُطلب اسم المضيف ولا اسم الخدمة. .TP \fBEAI_OVERFLOW\fP المخزن المؤقت المشار إليه بواسطة \fIhost\fP أو \fIserv\fP كان صغيرًا جدًا. .TP \fBEAI_SYSTEM\fP حدث خطأ في النظام. يمكن العثور على رمز الخطأ في \fIerrno\fP. .P ترجم الدالة \fBgai_strerror\fP(3) رموز الخطأ هذه إلى سلسلة نصية مقروءة للبشر، مناسبة للإبلاغ عن الأخطاء. .SH الملفات \fI/etc/hosts\fP .br \fI/etc/nsswitch.conf\fP .br \fI/etc/resolv.conf\fP .SH السمات للاطلاع على شرح للمصطلحات المستخدمة في هذا القسم، انظر \fBattributes\fP(7). .TS allbox; lbx lb lb l l l. الواجهة السمة القيمة T{ .na .nh \fBgetnameinfo\fP() T} سلامة الخيوط بيئة محلية آمنة لتعدد الخيوط (MT\-Safe) .TE .SH المعايير POSIX.1\-2008. RFC\ 2553. .SH التاريخ glibc 2.1. POSIX.1\-2001. .P قبل glibc 2.2، كانت الوسائط \fIhostlen\fP و \fIservlen\fP مكتوبة كنوع \fIsize_t\fP. .SH ملاحظات لمساعدة المبرمج في اختيار أحجام معقولة للمخازن المؤقتة المقدمة، يُعرّف \fI\fP الثوابت .P .in +4n .EX #define NI_MAXHOST 1025 #define NI_MAXSERV 32 .EE .in .P منذ glibc 2.8، تُعرض هذه التعريفات فقط إذا عُرفت وحدات ماكرو اختبار الميزات المناسبة، وهي: \fB_GNU_SOURCE\fP، \fB_DEFAULT_SOURCE\fP (منذ glibc 2.19)، أو (في إصدارات glibc حتى 2.19) \fB_BSD_SOURCE\fP أو \fB_SVID_SOURCE\fP. .P الأول هو الثابت \fBMAXDNAME\fP في الإصدارات الحديثة من ملف الرأس \fI\fP الخاص بـ BIND. والثاني هو تخمين بناءً على الخدمات المدرجة في RFC الأرقام المخصصة الحالي. .SH أمثلة يحاول الكود التالي الحصول على اسم المضيف العددي واسم الخدمة، لعنوان مقبس معين. لاحظ أنه لا يوجد مرجع مُرمّز آليًا لعائلة عناوين معينة. .P .in +4n .EX struct sockaddr *addr; /* input */ socklen_t addrlen; /* input */ char hbuf[NI_MAXHOST], sbuf[NI_MAXSERV]; \& if (getnameinfo(addr, addrlen, hbuf, sizeof(hbuf), sbuf, sizeof(sbuf), NI_NUMERICHOST | NI_NUMERICSERV) == 0) printf("host=%s, serv=%s\[rs]n", hbuf, sbuf); .EE .in .P يتحقق الإصدار التالي مما إذا كان عنوان المقبس لديه تعيين عنوان عكسي. .P .in +4n .EX struct sockaddr *addr; /* input */ socklen_t addrlen; /* input */ char hbuf[NI_MAXHOST]; \& if (getnameinfo(addr, addrlen, hbuf, sizeof(hbuf), NULL, 0, NI_NAMEREQD)) printf("could not resolve hostname"); else printf("host=%s\[rs]n", hbuf); .EE .in .P يمكن العثور على برنامج مثال يستخدم \fBgetnameinfo\fP() في \fBgetaddrinfo\fP(3). .SH "انظر أيضًا" \fBaccept\fP(2), \fBgetpeername\fP(2), \fBgetsockname\fP(2), \fBrecvfrom\fP(2), \fBsocket\fP(2), \fBgetaddrinfo\fP(3), \fBgethostbyaddr\fP(3), \fBgetservbyname\fP(3), \fBgetservbyport\fP(3), \fBinet_ntop\fP(3), \fBhosts\fP(5), \fBservices\fP(5), \fBhostname\fP(7), \fBnamed\fP(8) .P R.\& Gilligan, S.\& Thomson, J.\& Bound and W.\& Stevens, \fIBasic Socket Interface Extensions for IPv6\fP, RFC\ 2553, March 1999. .P Tatsuya Jinmei and Atsushi Onoe, \fIAn Extension of Format for IPv6 Scoped Addresses\fP, internet draft, work in progress .UR ftp:\://ftp.ietf.org\:/internet\-drafts\:/draft\-ietf\-ipngwg\-scopedaddr\-format\-02.txt .UE . .P Craig Metz, \fIProtocol Independence Using the Sockets API\fP, Proceedings of the freenix track: 2000 USENIX annual technical conference, June 2000 .ad l .UR http:\://www.usenix.org\:/publications\:/library\:/proceedings\:/usenix2000\:/freenix\:/metzprotocol.html .UE . .PP .SH ترجمة تُرجمت هذه الصفحة من الدليل بواسطة زايد السعيدي . .PP هذه الترجمة هي وثيقة مجانية؛ راجع .UR https://www.gnu.org/licenses/gpl-3.0.html رخصة جنو العامة الإصدار 3 .UE أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات. .PP إذا وجدت أي أخطاء في ترجمة صفحة الدليل هذه، يرجى إرسال بريد إلكتروني إلى قائمة بريد المترجمين: .MT kde-l10n-ar@kde.org .ME .