Scroll to navigation

listen(2) System Calls Manual 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 للإشارة إلى الخطأ.

الأخطاء

مقبس آخر يستمع بالفعل على نفس المنفذ.
(مقابس نطاق الإنترنت) لم يسبق ربط المقبس المشار إليه بـ sockfd بعنوان، وعند محاولة ربطه بمنفذ مؤقت (ephemeral)، تبيّن أن جميع أرقام المنافذ في نطاق المنافذ المؤقتة قيد الاستخدام حالياً. راجع النقاش حول /proc/sys/net/ipv4/ip_local_port_range في ip(7).
المعامل sockfd ليس واصف ملف صالح.
واصف الملف sockfd لا يشير إلى مقبس.
المقبس ليس من نوع يدعم عملية 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 أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات.

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

11 فبراير 2026 صفحات دليل لينكس 6.18