table of contents
| getipnodebyname(3) | Library Functions Manual | getipnodebyname(3) |
الاسم¶
getipnodebyname, getipnodebyaddr, freehostent - الحصول على أسماء وعناوين مضيف الشبكة
المكتبة¶
مكتبة سي المعيارية (libc، -lc)
موجز¶
#include <sys/types.h> #include <sys/socket.h> #include <netdb.h>
[[deprecated]] struct hostent *getipnodebyname(const char *name, int af,
int flags, int *error_num);
[[deprecated]] struct hostent *getipnodebyaddr(size_t size;
const void addr[size],
size_t size, int af,
int *error_num);
[[deprecated]] void freehostent(struct hostent *ip);
الوصف¶
هذه الدوال مهملة (وغير متوفرة في glibc). استخدم getaddrinfo(3) و getnameinfo(3) بدلاً من ذلك.
الدالتان getipnodebyname() و getipnodebyaddr() ترجعان أسماء وعناوين مضيف الشبكة. ترجع هاتان الدالتان مؤشرًا إلى البنية التالية:
struct hostent {
char *h_name;
char **h_aliases;
int h_addrtype;
int h_length;
char **h_addr_list;
};
تحل هذه الدوال محل الدالتين gethostbyname(3) و gethostbyaddr(3) اللتين كانتا تستطيعان الوصول فقط إلى عائلة عناوين شبكة IPv4. تستطيع الدالتان getipnodebyname() و getipnodebyaddr() الوصول إلى عائلات عناوين شبكة متعددة.
على عكس دوال gethostby، ترجع هذه الدوال مؤشرات إلى ذاكرة مخصصة ديناميكيًا. تُستخدم الدالة freehostent() لتحرير الذاكرة المخصصة ديناميكيًا بعد أن لم يعد المتصل بحاجة إلى بنية hostent.
معاملات getipnodebyname()¶
تبحث الدالة getipnodebyname() عن عناوين الشبكة للمضيف المحدد بواسطة المعامل name. يحدد المعامل af إحدى القيم التالية:
- AF_INET
- يشير المعامل name إلى عنوان IPv4 منقّط رباعي أو اسم مضيف شبكة IPv4.
- AF_INET6
- يشير المعامل name إلى عنوان IPv6 سداسي عشري أو اسم مضيف شبكة IPv6.
يحدد المعامل flags خيارات إضافية. يمكن تحديد أكثر من خيار واحد عن طريق إجراء عملية OR منطقية بينهم. يجب ضبط flags على 0 إذا لم تكن هناك خيارات مرغوبة.
- AI_V4MAPPED
- يُستخدم هذا العلم مع AF_INET6 لطلب استعلام عن عناوين IPv4 بدلاً من عناوين IPv6؛ سيتم تعيين عناوين IPv4 إلى عناوين IPv6.
- AI_ALL
- يُستخدم هذا العلم مع AI_V4MAPPED لطلب استعلام عن كل من عناوين IPv4 و IPv6. سيتم تعيين أي عنوان IPv4 يتم العثور عليه إلى عنوان IPv6.
- AI_ADDRCONFIG
- يُستخدم هذا العلم مع AF_INET6 لطلب إضافي بعدم إجراء استعلامات عن عناوين IPv6 ما لم يكن لدى النظام عنوان IPv6 واحد على الأقل معيّن لواجهة شبكة، وعدم إجراء استعلامات عن عناوين IPv4 ما لم يكن لدى النظام عنوان IPv4 واحد على الأقل معيّن لواجهة شبكة. يمكن استخدام هذا العلم بمفرده أو مع العلم AI_V4MAPPED.
- AI_DEFAULT
- هذا العلم مكافئ لـ (AI_ADDRCONFIG | AI_V4MAPPED).
معاملات getipnodebyaddr()¶
تبحث الدالة getipnodebyaddr() عن اسم المضيف الذي عنوان شبكته محدد بواسطة المعامل addr. يحدد المعامل af إحدى القيم التالية:
قيمة الإرجاع¶
يُعاد NULL إذا حدث خطأ، وسيحتوي error_num على رمز خطأ من القائمة التالية:
- HOST_NOT_FOUND
- لم يُعثر على اسم المضيف أو عنوان الشبكة.
- NO_ADDRESS
- تعرف خادم أسماء النطاقات على عنوان الشبكة أو الاسم، لكن لم يُعاد أي رد. قد يحدث هذا إذا كان المضيف الشبكي يملك عناوين IPv4 فقط ووُجه طلب لمعلومات IPv6 فقط، أو العكس.
- NO_RECOVERY
- أعاد خادم أسماء النطاقات استجابة فشل دائم.
- TRY_AGAIN
- أعاد خادم أسماء النطاقات استجابة فشل مؤقت. قد تكون محظوظًا أكثر في المرة القادمة.
يُعيد الاستعلام الناجح مؤشرًا إلى بنية hostent تحتوي على الحقول التالية:
- h_name
- هذا هو الاسم الرسمي لهذا المضيف الشبكي.
- h_aliases
- هذه مصفوفة من المؤشرات إلى الأسماء المستعارة غير الرسمية لنفس المضيف. تُنهى المصفوفة بمؤشر فارغ.
- h_addrtype
- هذه نسخة من الوسيطة af للدالة getipnodebyname() أو getipnodebyaddr(). ستكون h_addrtype دائمًا AF_INET إذا كانت الوسيطة af هي AF_INET. ستكون h_addrtype دائمًا AF_INET6 إذا كانت الوسيطة af هي AF_INET6.
- h_length
- سيُضبط هذا الحقل على sizeof(struct in_addr) إذا كانت h_addrtype هي AF_INET، وعلى sizeof(struct in6_addr) إذا كانت h_addrtype هي AF_INET6.
- h_addr_list
- هذه مصفوفة من مؤشر واحد أو أكثر إلى بنى عناوين الشبكة للمضيف الشبكي. تُنهى المصفوفة بمؤشر فارغ.
المعايير¶
لا شيء.
التاريخ¶
RFC 2553.
موجودة في glibc 2.1.91-95، لكن أُزيلت مرة أخرى. تدعمها عدة أنظمة شبيهة بيونكس، لكن جميعها تُصنفها كمُهملة.
انظر أيضًا¶
ترجمة¶
تُرجمت هذه الصفحة من الدليل بواسطة زايد السعيدي <zayed.alsaidi@gmail.com>
هذه الترجمة هي وثيقة مجانية؛ راجع رخصة جنو العامة الإصدار 3 أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات.
إذا وجدت أي أخطاء في ترجمة صفحة الدليل هذه، يرجى إرسال بريد إلكتروني إلى قائمة بريد المترجمين: kde-l10n-ar@kde.org.
| 21 سبتمبر 2025 | صفحات دليل لينكس (لم تصدر بعد) |