listen(2)

الاسم
listen - الاستماع للاتصالات على مقبس

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

موجز
#include <sys/socket.h>

int listen(int sockfd, int backlog);

الوصف
listen() يعلّم المقبس المشار إليه بـ sockfd كمقبس سلبي، أي كمقبس سيُستخدم لقبول طلبات الاتصال الواردة باستخدام accept(2).

الوسيط sockfd هو واصف ملف يشير إلى مقبس من النوع SOCK_STREAM أو SOCK_SEQPACKET.

الوسيط backlog يُعرّف الطول الأقصى الذي قد يصل إليه طابور الاتصالات المعلقة لـ sockfd. إذا وصل طلب اتصال عندما يكون الطابور ممتلئًا، فقد يتلقى العميل خطأً مع إشارة ECONNREFUSED، أو إذا كان البروتوكول الأساسي يدعم إعادة الإرسال، فقد يُتجاهل الطلب بحيث تنجح محاولة اتصال لاحقة.

قيمة الإرجاع
عند النجاح، يُعاد الصفر. وعند حدوث خطأ، يُعاد الرقم -1، ويُضبط errno للإشارة إلى الخطأ.

الأخطاء

EADDRINUSE
    مقبس آخر يستمع بالفعل على نفس المنفذ.

EADDRINUSE
    (مقابس نطاق الإنترنت) لم يسبق ربط المقبس المشار إليه بـ sockfd بعنوان، وعند محاولة ربطه بمنفذ مؤقت (ephemeral)، تبيّن أن جميع أرقام المنافذ في نطاق المنافذ المؤقتة قيد الاستخدام حالياً. راجع النقاش حول /proc/sys/net/ipv4/ip_local_port_range في ip(7).

EBADF
    المعامل sockfd ليس واصف ملف صالح.

ENOTSOCK
    واصف الملف sockfd لا يشير إلى مقبس.

EOPNOTSUPP
    المقبس ليس من نوع يدعم عملية listen().

المعايير
POSIX.1-2024.

التاريخ
4.2BSD, POSIX.1-2001.

ملاحظات
لقبول الاتصالات، تُنفّذ الخطوات التالية:

    (1) يُنشأ مقبس باستخدام socket(2).

    (2) يُربط المقبس بعنوان محلي باستخدام bind(2)، بحيث يمكن للمقابس الأخرى أن تتصل به باستخدام connect(2).

    (3) يُحدد الاستعداد لقبول الاتصالات الواردة وحد الطابور للاتصالات الواردة باستخدام listen().

    (4) تُقبل الاتصالات باستخدام accept(2).

تغير سلوك الوسيط backlog على مقابس TCP مع Linux 2.2. الآن يُحدد طول الطابور للمقابس المؤسسة بالكامل المنتظرة للقبول، بدلاً من عدد طلبات الاتصال غير المكتملة. يمكن ضبط الطول الأقصى للطابور للمقابس غير المكتملة باستخدام /proc/sys/net/ipv4/tcp_max_syn_backlog. عند تمكين ملفات تعريف الارتباط المتزامنة، لا يوجد حد أقصى منطقي ويُتجاهل هذا الإعداد. انظر tcp(7) لمزيد من المعلومات.

إذا كان الوسيط backlog أكبر من القيمة في /proc/sys/net/core/somaxconn، فسيُحدد إلى تلك القيمة بصمت. منذ Linux 5.4، المبدئي في هذا الملف هو 4096؛ في النوى الأقدم، القيمة المبدئية هي 128. قبل Linux 2.4.25، كان هذا الحد قيمة مشفرة بشكل ثابت، SOMAXCONN، بقيمة 128.

أمثلة
انظر bind(2).

انظر أيضًا
accept(2), bind(2), connect(2), socket(2), socket(7)

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

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

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