bindresvport(3)

الاسم
bindresvport - وصل مقبس بمنفذ IP متميز

المكتبة
مكتبة سي المعيارية (libc، -lc)

موجز
#include <sys/types.h>
#include <netinet/in.h>

int bindresvport(int sockfd, struct sockaddr_in *sin);

الوصف
تُستخدم bindresvport() لوصل المقبس المشار إليه بواصف الملف sockfd بمنفذ IP متميز مجهول، أي رقم منفذ يُختار آليًا من النطاق 512 إلى 1023.

إذا نجحت bind(2) التي نفذتها bindresvport()، وكان sin ليس NULL، فإن sin->sin_port يُرجع رقم المنفذ المُخصص فعليًا.

يمكن أن يكون sin NULL، وفي هذه الحالة يُؤخذ sin->sin_family ضمنيًا على أنه AF_INET. لكن في هذه الحالة، لا تملك bindresvport() طريقة لإرجاع رقم المنفذ المُخصص فعليًا. (يمكن الحصول على هذه المعلومات لاحقًا باستخدام getsockname(2).)

قيمة الإرجاع
تُرجع bindresvport() 0 عند النجاح؛ وإلا يُرجع -1 ويُضبط errno للإشارة إلى الخطأ.

الأخطاء
قد تفشل bindresvport() لأي من الأسباب نفسها لـ bind(2). بالإضافة إلى ذلك، قد تحدث الأخطاء التالية:

EACCES
    لم تكن العملية المستدعية متميزة (على لينكس: لم تمتلك العملية المستدعية إمكانية CAP_NET_BIND_SERVICE في نطاق المستخدم الذي يحكم نطاق شبكتها).

EADDRINUSE
    جميع المنافذ المتميزة قيد الاستخدام.

EAFNOSUPPORT (EPFNOSUPPORT في glibc 2.7 وما قبله)
    sin ليس NULL و sin->sin_family ليس AF_INET.

السمات
للاطلاع على شرح للمصطلحات المستخدمة في هذا القسم، انظر attributes(7).
الواجهة | السمة | القيمة
bindresvport() | سلامة الخيوط | glibc >= 2.17: MT-Safe; glibc < 2.17: MT-Unsafe

تستخدم دالة bindresvport() متغيرًا ثابتًا لم يكن محميًا بقفل قبل glibc 2.17، مما يجعل الدالة غير آمنة للخيوط المتعددة.

الإصدارات
موجودة على أنظمة BSD، Solaris، والعديد من الأنظمة الأخرى.

ملاحظات
على عكس بعض تطبيقات bindresvport()، يتجاهل تطبيق glibc أي قيمة يقدمها المستدعي في sin->sin_port.

المعايير
BSD.

انظر أيضًا
bind(2), getsockname(2)

ترجمة
تُرجمت هذه الصفحة من الدليل بواسطة زايد السعيدي <zayed.alsaidi@gmail.com>

هذه الترجمة هي وثيقة مجانية؛ راجع رخصة جنو العامة الإصدار 3 (https://www.gnu.org/licenses/gpl-3.0.html) أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات.

إذا وجدت أي أخطاء في ترجمة صفحة الدليل هذه، يرجى إرسال بريد إلكتروني إلى قائمة بريد المترجمين: kde-l10n-ar@kde.org.