2011-04-13 15 views
9

संभव डुप्लिकेट गिराया:
Should I close a socket (TCPIP) after every transaction?सॉकेट खुला रखा जाना चाहिए सकता है या

चलें कहते हैं कि मैं interprocess संचार कि सॉकेट का उपयोग कर काम करता है के कुछ प्रकार है।

क्या मेरी प्रक्रियाएं कनेक्शन स्थापित करनी चाहिए और इसे खोलने पर डेटा (या प्रति क्लाइंट या इसी तरह के 1 धागे) को खोलना चाहिए; या बस कनेक्शन स्थापित करने के लिए एक बेहतर तरीका है, जिस डेटा को मैं चाहता हूं उसे भेजूं, इसे बंद करें और फिर मेरा प्रतीक्षा राज्य दर्ज करें?

आमतौर पर इस समस्या का दृष्टिकोण क्या है?

+0

जिज्ञासा से बाहर, क्यों नामित पाइप पर सॉकेट? –

+0

मेरे मामले में मैं एक एंड्रॉइड एप्लिकेशन और सी # के बीच एक पुल का निर्माण कर रहा हूं, इसलिए मुझे नहीं लगता कि पाइप उचित (या संभव) होंगे? –

+0

इंटरप्रोसेस एक ही मशीन पर विभिन्न प्रक्रियाओं के बीच संचार को संदर्भित करता है, इसलिए मैंने पूछा, अगर वे अलग-अलग मशीनों पर हैं तो ग्राहक सर्वर या सहकर्मी के साथ सहकर्मी सही शब्द है। –

उत्तर

3

स्थानीय सॉकेट में टीसीपी/आईपी स्टैक को छोड़ने के बाद बहुत अधिक ओवरहेड नहीं है और नामित पाइप का उपयोग करके कार्यान्वित किया जाता है। एक सॉकेट खोलने और बंद रखने से बहुत अंतर नहीं आएगा।

+1

स्थानीय सॉकेट केवल टीसीपी/आईपी स्टैक को छोड़ देता है अगर आप विशेष रूप से यूनिक्स डोमेन सॉकेट खोलते हैं - जहां यह उपलब्ध है। – gby

6

मैंने इस सवाल से पूछा और सभी तीन प्रतिक्रियाओं ने इसे खोलने के लिए कहा। मैं उसके साथ गया, और ऐसा लगता है कि मेरे लिए काम कर रहा है।

Should I close a socket (TCPIP) after every transaction?

2

किसी भी संसाधन, दर्ज करने, सॉकेट, डेटाबेस कनेक्शन या हार्डवेयर डिवाइस ले समय और खोलने के लिए प्रोसेसर और मेमोरी का उपयोग करता है क्योंकि यह, संसाधनों को लाने के सुरक्षा एक्सेस गणना और कुछ बहीखाता करना है हो सकता है।

प्रत्येक संदेश के बीच खोलना और बंद करना सिर्फ सीपीयू और मेमोरी संसाधनों को बर्बाद कर देगा।

इसे लंबे समय तक खोलना भी खतरनाक है, लेकिन आपको इसे खोलना होगा और किसी भी एक अंत की मृत्यु हो जाने पर इसे स्वचालित रूप से बंद करने के लिए सर्वोत्तम टाइमआउट मान तय करना होगा।

संबंधित मुद्दे