سؤال

يمكنني استخدام فئة ServersoCKE Java لتطبيق الخادم. هل تشارك طريقة قبول () في مصافحة TCP/IP؟

كما أرى في تفريغ TCP/IP ومن Command NetStat ، فإن العملاء ينشئون اتصالات مع ما قبل القبول يتم استدعاء كائن المقبس.

هل هي قضية جافا ، أم لا أفهم قبول () دلالات؟

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

المحلول

بشكل عام في UNIX ، إذا قمت بتعميم المقبس باستخدام الاستماع () ، يبدأ نظام التشغيل في قبول الاتصالات. عند الاتصال بوظيفة قبول () ، يقوم نظام التشغيل ببساطة بتسليم الاتصال الذي تم فتحه بالفعل. تأخذ الاستماع معلمة تتيح لك تحديد عدد الاتصالات المفتوحة "غير المقبولة" التي يسمح بها نظام التشغيل (أي حجم قائمة الانتظار).

نصائح أخرى

ال accept الطريقة لا تشارك بنشاط في المصافحة ، في حد ذاتها. يتم تنفيذ إرسال واستقبال الرسائل في مكدس بروتوكول TCP/IP ، عادة في مساحة Kernel OS.

ومع ذلك ، فإن accept() تشارك الطريقة بمعنى أن مكدس TCP/IP لن يرسل سوى رسالة SYN-ACL إذا كانت بعض العمليات تحتوي على accept() استدعاء نشط لمقبس ملزم بعنوان IP والمنفذ ذات الصلة. عند اكتمال المصافحة الثلاثة ، accept() سوف تكتمل استدعاء الطريقة.

إذا لم تكن عملية مكالمات accept() في الوقت المناسب ، سيتم إسقاط رسالة SYN الواردة بواسطة kernel وسيقوم العميل البعيد في النهاية بتوضيح محاولة الاتصال. (من ناحية أخرى ، إذا لم يكن عنوان IP / المنفذ غير ملزم ، فمن المحتمل أن يستجيب النواة مع RST ، وسيشاهد العميل البعيد "اتصالًا مرفوضًا".).

قبول الإرجاع فقط بعد توصيل العميل والخادم (المصافحة ، إلخ).

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