2009-11-17 13 views
17

स्थानीय आईपीसी (दोनों जीत-एपीआई), प्रभावशीलता-विकृत, संसाधन-मज़े या अन्यथा के लिए सॉकेट पर नामित पाइप का पक्ष लेने के कोई कारण हैं, क्योंकि दोनों एक जैसे व्यवहार करते हैं (और एक समान इंटरफेस द्वारा वैसे भी सारणित होने की संभावना है), एक ऐसे अनुप्रयोग में जो पहले से ही नेटवर्क उद्देश्यों के लिए सॉकेट का उपयोग करने की संभावना है?विंडोज़ पर स्थानीय आईपीसी के लिए सॉकेट बनाम पाइप नामित?

मैं कम से कम संबोधित समस्या का नाम दे सकता हूं: पाइप के लिए फ़ाइल नामों के खिलाफ सॉकेट के लिए पोर्ट नंबर। इसके अलावा, नामित पाइप (AFAIK) फ़ायरवॉल (ब्लॉक/अनब्लॉक संवाद) को अलर्ट नहीं करेगा, हालांकि अवरुद्ध अनुप्रयोग स्थानीय रूप से सॉकेट के माध्यम से अभी भी संवाद कर सकते हैं। खाते में लेने के लिए और कुछ और?

सॉकेट का उपयोग करने के मामले में, क्या स्थानीय रूप से सॉकेट का उपयोग करते समय किसी भी विंसॉक सेटिंग्स/झंडे की सिफारिश की जाती है?

उत्तर

15

कुछ सूक्ष्म अंतर:

सॉकेट स्थानीय आईपीसी लिए काम नहीं करेगा अगर आप एक कामकाज एडाप्टर नहीं है। एक फ़ंक्शनिंग एडाप्टर के बिना पीसी कितना आम है? खैर, मैंने काट दिया जब किसी ने किसी ऐसे लैपटॉप पर किसी ग्राहक को अपने सॉफ़्टवेयर को प्रदर्शित करने का प्रयास किया जो किसी नेटवर्क या बिजली की आपूर्ति में प्लग नहीं हुआ था (इसलिए ओएस ने बिजली बचाने के लिए नेटवर्क कार्ड अक्षम कर दिया था) और वायरलेस एडाप्टर अक्षम कर दिया गया था (क्योंकि लैपटॉप उपयोगकर्ता वायरलेस का उपयोग नहीं किया था)। आप लूपबैक एडाप्टर स्थापित करके इसे प्राप्त कर सकते हैं लेकिन यह आदर्श नहीं है।

फ़ायरवॉल सॉफ़्टवेयर टीसीपी/आईपी कनेक्शन स्थापित करने में समस्याएं पैदा कर सकता है। यह स्थानीय आईपीसी के लिए एक मुद्दा नहीं माना जाता है, लेकिन मुझे विश्वास नहीं है। Named pipes can have firewalls too.

नामित पाइप बनाने के लिए आवश्यक विशेषाधिकारों के कारण आपको समस्याएं हो सकती हैं, या नामित पाइप के नए उदाहरण पैदा कर सकते हैं। उदाहरण के लिए, मैं एक ही नामित पाइप का उपयोग करके एकाधिक सर्वर चला रहा था (शायद एक अच्छा विचार नहीं है, लेकिन यह परीक्षण के लिए था) और कुछ CreateNamedPipe में विफल रहे क्योंकि पाइप बनाने वाला पहला सर्वर प्रशासक मोड में चल रहा था (क्योंकि इसे लॉन्च किया गया था प्रशासक मोड में विजुअल स्टूडियो) जबकि शेष सामान्य यूएसी स्तर के साथ कमांड लाइन से लॉन्च किए गए थे।

हालांकि रूबेंस द्वारा वर्णित आलेख ज्यादातर नेटवर्क पर आईपीसी के बारे में है, यह इस बात को इंगित करता है कि "स्थानीय नामित पाइप कर्नेल मोड में चलती है और यह बेहद तेज है"।

+7

विंडोज पीसी में हमेशा वर्चुअल लूपबैक इंटरफ़ेस स्थापित होता है। विंडोज सॉकेट का उपयोग करने के लिए आपको पीसी में नेटवर्क एडाप्टर या ड्राइवर की आवश्यकता नहीं है। अपनी स्थानीय प्रक्रियाओं को संबोधित करने के लिए आईपी पता 127.0.0.1 का उपयोग करें। – phord

4

एक अन्य समाधान जिसे आप विचार करना चाहते हैं वह नामित साझा स्मृति क्षेत्र है। यह थोड़ा सा काम है क्योंकि आपको अपने आप को फ्लो कंट्रोल प्रोटोकॉल स्थापित करना है, लेकिन मैंने इसे पहले से सफलतापूर्वक इस्तेमाल किया है जहां गति सबसे महत्वपूर्ण बात थी।

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