java - بالعربي - ما هو الفرق بين الاتصال وقراءة الوقت للمآخذ؟



sockets timeout (2)

3 أسئلة:

  1. ما هو الفرق بين الاتصال وقراءة الوقت للمآخذ؟

  2. ماذا يعني مهلة الاتصال المحددة بـ "اللانهاية"؟ في أي حالة يمكن أن تظل في حلقة المصدر؟ وماذا يمكن أن يؤدي إلى أن تموت حلقة اللانهاية؟

  3. ماذا يعني ضبط المهلة المحددة على "اللانهاية" يعني؟ في أي حالة يمكن أن تظل في حلقة المصدر؟ وماذا يمكن أن يؤدي إلى أن تموت حلقة اللانهاية؟

https://src-bin.com


Answer #1

1) ما هو الفرق بين الاتصال وقراءة المهلة للمآخذ؟

مهلة الاتصال هي المهلة في إجراء الاتصال الأولي ؛ أي إكمال اتصال اتصال TCP. مهلة القراءة هي المهلة على انتظار قراءة البيانات. وعلى وجه الخصوص ، إذا فشل الخادم في إرسال بايت <timeout> بعد البايت الأخير ، فسيتم رفع خطأ مهلة القراءة.

2) ماذا تعني مهلة الاتصال المحددة بـ "اللانهاية"؟ في أي حالة يمكن أن تظل في حلقة المصدر؟ وماذا يمكن أن يؤدي إلى أن تموت حلقة اللانهاية؟

هذا يعني أن محاولة الاتصال يمكن أن يحتمل أن تحجب إلى الأبد. لا توجد حلقة لا نهائية ، ولكن يمكن إلغاء حظر محاولة الاتصال بواسطة مؤشر ترابط آخر يغلق المقبس. (قد أيضاً تنفيذ استدعاء Thread.interrupt() الحيلة ... غير متأكد.)

3) ماذا تعني مهلة القراءة المحددة إلى "اللانهاية"؟ في أي حالة يمكن أن تظل في حلقة المصدر؟ وماذا يمكن أن يؤدي إلى أن تموت حلقة اللانهاية؟

هذا يعني أنه قد يتم حظر الاتصال read على تيار المقبس للأبد. مرة أخرى لا توجد حلقة لا نهائية ، ولكن يمكن إلغاء حظر read بواسطة Thread.interrupt() وإغلاق المقبس و (بالطبع) الطرف الآخر إرسال البيانات أو إغلاق الاتصال.


Answer #2

هذه هي قيم انتهاء المهلة التي تفرضها JVM لإنشاء اتصال TCP والانتظار على بيانات القراءة من المقبس.

إذا تم تعيين القيمة إلى ما لا نهاية ، فلن تنتظر إلى الأبد. إنه يعني ببساطة أن JVM ليس لديه مهلة وأن نظام التشغيل سيكون مسؤولا عن جميع المهلات. ومع ذلك ، قد تكون المهلات على نظام التشغيل طويلة حقًا. على بعض الشبكات البطيئة ، رأيت مهلات لمدة 6 دقائق.

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

الأسلوب الآمن الوحيد لمعالجة مهلة TCP هو تشغيل رمز الاتصال في مؤشر ترابط مختلف ومقاطعة مؤشر الترابط عندما يستغرق وقتًا طويلاً.





connection