दिलचस्प पोस्ट
sqlite3। प्रोग्रामिंग त्रुटि: बाइनिंग की गलत संख्या की आपूर्ति की। वर्तमान कथन 1 का उपयोग करता है, और 74 आपूर्ति की जाती है घातक त्रुटि को कैसे पकड़ें: अधिकतम 30 सेकंड का निष्पादन समय PHP में पार हो गया क्या मुझे 'allow_url_fopen' को PHP में अनुमति देनी चाहिए? बहु-लाइन टिप्पणियां निकालें अभिव्यक्ति पैरामीटर को किसी अन्य अभिव्यक्ति के तर्क के रूप में पास करें PHP फ्लश / ob_flush काम नहीं कर रहा है तालिका लेआउट में पंक्तियों को गतिशील रूप से कैसे जोड़ें MySQLi में से चुनें * AJAX के साथ गतिशील रूप से Google मानचित्र v3 लोड करें मान्यकरण त्रुटि: मान मान्य नहीं है एक ही कुंजी का योग सरणी मान इकाई फ़्रेमवर्क 4 बनाम NHibernate 8badf00d क्या मतलब है? रूबी गॉटचस एक नौसिखिया किस बारे में चेतावनी दी जानी चाहिए? एक asp.net पैनल में सभी नियंत्रणों को ढूँढना?

प्रोग्रामिंग पी 2 पी आवेदन

मैं एक कस्टम पी 2 पी कार्यक्रम लिख रहा हूं जो पोर्ट 4900 पर चलता है। कुछ मामलों में जब व्यक्ति राउटर के पीछे होता है, तो यह पोर्ट इंटरनेट से उपलब्ध नहीं है।

क्या इंटरनेट से बंदरगाह तक पहुंच को सक्षम करने का एक स्वचालित तरीका है? मुझे वास्तव में यकीन नहीं है कि अन्य पी 2 पी अनुप्रयोग कैसे काम करते हैं

क्या कोई इस पर कुछ प्रकाश डाल सकता है?

वेब के समाधान से एकत्रित समाधान "प्रोग्रामिंग पी 2 पी आवेदन"

संक्षेप में P2P कनेक्टिविटी मान लें कि हम यहां यूडीपी के बारे में बात कर रहे हैं। नीचे दिए गए चरणों को भी कुछ समायोजन के साथ टीसीपी पर लागू किया जा सकता है।

  1. अपने सभी स्थानीय आईपी पते (आमतौर पर केवल 1) को बताएं। एक आईपी एड्रेस के साथ प्रत्येक एडेप्टर के लिए दिए गए पोर्ट नंबर पर यूडीपी सॉकेट बनाएं।

  2. चरण 1 में बनाए गए प्रत्येक सॉकेट के लिए, अपने बाहरी आईपी पते को खोजने के लिए और यह पता लगाने के लिए कि क्या आंतरिक पोर्ट नंबर नक्शे को एनएटी (यह हमेशा एक ही बंदरगाह मूल्य नहीं है) के बाहर देखने के लिए उसी सॉकेट के साथ एक STUN या चालू सर्वर से संपर्क करें। यही है, आपका स्थानीय पता 192.168.1.2:4900 बाहरी दुनिया के लिए 128.11.12.13:8888 हो सकता है। और कुछ NATs हमेशा उसी पोर्ट मैपिंग का उपयोग नहीं करते हैं, जब समान स्थानीय पोर्ट का उपयोग अन्य आईपी पतों पर किया जाता है। टर्न भी आपको एक "रिले एड्रेस" प्रदान करेगा। आप अपने राउटर से सीधे पोर्ट मैप किए गए पते को प्राप्त करने के लिए UPNP का उपयोग कर सकते हैं, अगर यह प्रोटोकॉल का समर्थन करता है

  3. एक सम्मिलित सेवा (एसआईपी, एक्सएमपीपी, त्वरित संदेश, वेब सेवा, ईमेल, तार के साथ कप) के माध्यम से, एक सेवा में अपना पता उम्मीदवार सूची प्रकाशित करें या अन्य क्लाइंट को एक अधिसूचना भेजें, जो कहते हैं, "अरे, मैं आपके साथ जुड़ना चाहता हूं "। इस संदेश में चरण 1 और 2 में एकत्र किए गए सभी "पता उम्मीदवार" (आईपी और पोर्ट जोड़े) शामिल हैं

  4. रिमोट क्लाइंट, कनेक्ट करने के लिए आमंत्रण प्राप्त करने पर, चरण 1 और 2 ऊपर भी काम करता है। फिर एक ही चैनल के माध्यम से अपनी उम्मीदवार सूची को वापस भेजता है जिस पर उन्हें आविष्कारक की उम्मीदवार सूची मिली।

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

** – आमतौर पर सबसे अच्छा P2P ग्राहकों के लिए एक प्रसिद्ध पोर्ट पर भरोसा नहीं करना है क्योंकि एक ही एनएटी या फ़ायरवॉल के पीछे दो क्लाइंट एक ही समय में आपके सॉफ़्टवेयर का उपयोग करने में सक्षम नहीं होगा।

यहाँ तलाशने के लिए कुछ तकनीकों का त्वरित सारांश है

STUN – क्या उनके बाहरी आईपी और पोर्ट मैपिंग हैं, यह पता लगाने के लिए ग्राहकों के लिए एक सरल सर्वर और प्रोटोकॉल है जो नेट / रूट के पीछे है।

टर्न STUN के लिए एक विस्तार है, लेकिन पी 2 पी कनेक्टिविटी परिदृश्य के लिए रिलेयरिंग का समर्थन करता है जहां फायरवॉल और एनएटी प्रत्यक्ष कनेक्शन रोकते हैं।

आईसीई ऐसे कदमों का एक सेट है, जिसके द्वारा एक पी 2 पी कनेक्शन स्थापित करने के लिए स्ट्यून और टर्न का उपयोग किया जाता है। ICE ऊपर 1-5 के चरणों के लिए एक औपचारिक प्रोटोकॉल है I आईसीई पर स्लाइड के दो उत्कृष्ट सेट्स यहां और यहां हैं ।

वेबआरटीसी ICE मानक के साथ-साथ एक संदर्भ पुस्तकालय है, जो पीयूपी सत्रों को एसटीयूएन और टर्न के साथ करता है।

UPNP + इंटरनेट गेटवे डिवाइस प्रोटोकॉल – कुछ राउटर मेजबान के लिए स्वचालित रूप से पोर्ट मैपिंग प्राप्त करने के लिए इसका समर्थन करते हैं।

लिब्निक्स लिनक्स के लिए एक खुला स्रोत सी लाइब्रेरी है (और यह विंडोज़ पर काम कर सकता है) जो आईसीई लागू करता है।

libjingle Google से एक और आईसीई कार्यान्वयन (सी ++) है विंडोज और लिनक्स के लिए

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

और अंत में, मेरे लिए आपके STUN सर्वर कोड बेस का उपयोग करने के लिए मेरे पास एक ज़बरदस्त प्लग है

कुछ मामलों में समाधान होते हैं, देखें UPnP: https://en.wikipedia.org/wiki/Universal_Plug_and_Play#NAT_traversal

मेरा घर राउटर यह अनुमति देता है, मूल रूप से, कंप्यूटर से उचित अनुरोध द्वारा स्वचालित रूप से NAT कॉन्फ़िगर किया जा सकता है

मैं इस पर गिनती नहीं करूंगा कि आपकी उपलब्धता में बड़ा सुधार हो, क्योंकि कई राउटर दोनों का समर्थन नहीं करते और इसे सक्षम किया है।

संपादित करें: @ डेविड ने UPnP के लिए एक .NET लाइब्रेरी के लिए यह इतना सवाल सुझाया है: क्या .NET (C # या VB.NET) के लिए कोई UPnP लाइब्रेरी है?

मैं इस तरह के अनुप्रयोग के लिए ओपन सोर्स फ्रेमवर्क के रूप में वेबआरटीसी टेक्नोलॉजी का इस्तेमाल करूंगा।

सरकारी वेबसाइट

असल में यह खुले स्रोत परियोजना है जो पीयर-टू-पीयर टेक्नोलॉजीज़ के लिए बॉक्स के बाहर सभी आवश्यक समर्थन करता है:

  • बर्फ और STUN (एनएटी ट्रवर्सल)
  • डीटीएलएस और एसआरटीपी (सुरक्षा)
  • स्ट्रीमिंग की गुणवत्ता के लिए एवीपीएफ

यह आपके द्वारा की जाने वाली चीज़ों से थोड़ा अधिक जटिल हो सकता है, लेकिन टीसीपी होल पंचिंग एक ऐसी तकनीक है जो काम करना चाहिए। http://en.wikipedia.org/wiki/TCP_hole_punching

वैकल्पिक रूप से, यूपीएनपी रूटर / फायरवॉल के लिए अच्छा काम करता है जो इसका समर्थन करते हैं।

आपके पास एक और विकल्प है जो NAT पोर्ट मैपिंग प्रोटोकॉल (NAT-PMP) NAT-PMP व्यापक रूप से वीओआईपी अनुप्रयोगों जैसे स्काइप या बिटटोरेंट P2P क्लाइंट द्वारा उपयोग किया जाता है।