1) कनेक्शन और सॉकेट के लिए पढ़ने के लिए समय समाप्ति के बीच क्या अंतर है?
कनेक्शन टाइमआउट प्रारंभिक कनेक्शन बनाने में समय समाप्ति है; यानी टीसीपी कनेक्शन हैंडशेक पूरा करना। रीड टाइमआउट डेटा पढ़ने के इंतजार पर टाइमआउट है। विशेष रूप से, यदि सर्वर बाइट < टाइमआउट> अंतिम बाइट के बाद सेकंड भेजने में विफल रहता है, तो एक रीड टाइमआउट त्रुटि उठाई जाएगी।
2) कनेक्शन टाइमआउट "अनंतता" पर क्या मतलब है? एक अव्यवस्थित लूप में यह किस स्थिति में रह सकता है? और क्या ट्रिगर कर सकता है कि अनंत-लूप मर जाता है?
इसका मतलब है कि कनेक्शन प्रयास संभावित रूप से हमेशा के लिए अवरुद्ध हो सकता है। कोई अनंत लूप नहीं है, लेकिन कनेक्ट करने का प्रयास सॉकेट को बंद करने वाले किसी अन्य थ्रेड द्वारा अनब्लॉक किया जा सकता है। (ए Thread.interrupt()
कॉल भी चाल कर सकता है ... सुनिश्चित नहीं है।)
3) "अनंतता" के लिए निर्धारित टाइमआउट सेट क्या है? एक अव्यवस्थित लूप में यह किस स्थिति में रह सकता है? और क्या ट्रिगर कर सकता है कि अनंत-लूप मर जाता है?
इसका मतलब है कि सॉकेट स्ट्रीम पर read
पर कॉल हमेशा के लिए अवरुद्ध हो सकता है। एक बार फिर कोई अनंत लूप नहीं है, लेकिन read
को Thread.interrupt()
कॉल द्वारा अनब्लॉक किया जा सकता है, सॉकेट बंद कर दिया जा सकता है, और (निश्चित रूप से) दूसरा अंत डेटा भेज रहा है या कनेक्शन बंद कर रहा है।
स्रोत
2010-06-18 12:14:07
"पढ़ा गया टाइमआउट डेटा पढ़ने के लिए प्रतीक्षा करने का समय है।"। आपने डेटा पढ़ने के लिए "प्रतीक्षा" लिखा था? टाइमआउट पढ़ें वह समय नहीं है जब सॉकेट कितनी देर तक खुला हो सकता है? – corgrath
जावा में आप कनेक्शन में "अनंतता" सेट कर सकते हैं और टाइमआउट पढ़ सकते हैं। मैं सोच रहा हूं कि ये परिस्थितियां कैसे हो सकती हैं (जहां यह एक infinitive पाश में होगा)। यदि आप कहते हैं कि कनेक्शन टीसीपी हैंडशेक के लिए है, तो प्रतीक्षा कैसे अविश्वसनीय हो सकती है? क्या टीसीपी में सभी पैकेट नहीं हैं? – corgrath
"टाइमआउट पढ़ें वह समय नहीं है जब सॉकेट कितनी देर तक खुला हो सकता है?" वह सही है। "क्या टीसीपी में सभी पैकेट नहीं हैं?" टाइमआउट कहता है कि शुरुआती एसवाईएन पैकेट के जवाब में दूसरे सिरे के लिए एक एसईएन-एसीके भेजने के लिए कितना इंतजार करना है। –