سؤال

كنت أحاول العثور على أمثلة حول برمجة المقبس وجاء على هذا البرنامج النصي:http://stacklessexamples.googlecode.com/svn/trunk/examples/networking/mud.py.

عند القراءة من خلال هذا البرنامج النصي، وجدت هذا الخط: Listences.Listen (5)

كما أفهمها - يقرأ 5 بايت من المخزن المؤقت ثم يفعل الاشياء معها ...

ولكن ماذا يحدث إذا تم إرسال أكثر من 5 بايت من الطرف الآخر؟

في المكان الآخر من هذا البرنامج النصي، يتحقق من الإدخال مقابل 4 أوامر وترى إذا كان هناك r n في السلسلة. لا تتصدر "Look" Plus R n لأكثر من 5 بايت؟

آلان

هل كانت مفيدة؟

المحلول

ينطبق ما يلي على المقابس بشكل عام، ولكن يجب أن يساعد في الإجابة على سؤالك المحدد حول استخدام مآخذ من بيثون.

Socket.Listen () يستخدم على الخادم المقبس للاستماع إلى طلبات الاتصال الواردة.

المعلمة مرت للاستماع يسمى تراكم وهذا يعني أن العديد من الاتصالات يجب أن يقبل المقبس ووضعه في المخزن المؤقت في انتظار حتى تنتهي من مكالمتك لقبول (). ينطبق ذلك على الاتصالات التي تنتظر الاتصال بمقبس الخادم الخاص بك بين الوقت الذي اتصلت به الاستماع () والوقت الذي أنهيت فيه مكالمة مطابقة لقبول ().

لذلك، في مثالك، فأنت تحدد Backlog إلى 5 اتصالات.

ملحوظة.. إذا قمت بتعيين تراكمك المتراكم الخاص بك إلى 5 اتصالات، سيتم إسقاط الاتصالات التالية (السادسة والسابعة وما إلى ذلك) وستتلقى مقبس الاتصال خطأ في الاتصال رسالة (شيء مثل "مضيف رفض بنشاط" رسالة الاتصال ")

نصائح أخرى

قد يساعدك ذلك في فهم الرمز: http://www.amk.ca/python/howto/sockets/

الحجة 5 ل listenSocket.listen ليس عدد البايتات للقراءة أو المخزن المؤقت، إنه backlog:

socket.listen(backlog)

استمع إلى الاتصالات المصنوعة إلى المقبس. تحدد الوسيطة Backlog الحد الأقصى لعدد الاتصالات في قائمة الانتظار ويجب أن يكون 1 على الأقل؛ الحد الأقصى للقيمة يعتمد على النظام (عادة 5).

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top