दिलचस्प पोस्ट
कैमरा आउटपुट के लिए कस्टम फ़िल्टर लागू करें अजगर में एक 'स्थानीय स्थिर' चर का अनुकरण करना वेबपैक में jQuery प्लगिन निर्भरता को प्रबंधित करना एंड्रॉइड स्टूडियो ग्रेडल मुद्दे को संस्करण 0.5.0 में अपग्रेड कर रहा है – 0.8 से 0.9 तक स्थानांतरित करने वाले ग्रैडल – एंड्रॉइड स्टूडियो 0.8.1 में अपग्रेड जावा में लूप के लिए अगले इनपुट लेने से पहले 3 बार चला जाता है टीएलएस / एलडीएपी या टीएलएस / एचटीटीपी कनेक्शन की स्थापना के समय तार पर क्या होता है? क्या मुझे सदस्य डेटा में पॉइंटर्स या संदर्भ पसंद करना चाहिए? स्क्रॉल करें और सूची दृश्य में नीचे स्क्रॉल करें मैं SQL सर्वर मेमोरी से SqlDependency कैसे साफ़ करूं? नुकीले मान त्रुटि: एक अनुक्रम के साथ एक सरणी तत्व सेट करना यह संदेश एक मौजूदा क्रम के बिना प्रकट हो सकता है? PHP में एक वर्ग के सभी उदाहरण प्राप्त करें मैं जावा में गैर-प्रिंट करने योग्य यूनिकोड वर्णों को कैसे बदल सकता / सकती हूं? सी # यूटीएफ -8 से आईएसओ -885 9-1 (लैटिन 1) एच से स्ट्रिंग कन्वर्ट करें प्रोग्रामर रूटर V4 का उपयोग करके नेविगेट करें C ++ std :: pair का सी # एनालॉग क्या है?

क्लाइंट / सर्वर ग्राकेशंस

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

इस समय क्या हो रहा है सर्वर डेटा को ठीक से भेज रहा है, जो सिर्फ सर्वर की समय वाली स्ट्रिंग है

समस्या तब शुरू होती है, जब मेरे पास एक ग्राहक है जो पहले से ही सर्वर से जुड़ा हुआ है और फिर मैं एक और ग्राहक से जुड़ जाता हूं .. समस्या यह है: दूसरा कनेक्टेड क्लाइंट किसी भी कारण से पहले क्लाइंट को भी जोड़ता है।

मैं अन्य ग्राहकों से जुड़ने और सर्वर से कनेक्ट होने में सक्षम होना चाहता हूं। कोई भी मदद बहुत अच्छी रहेगी

Solutions Collecting From Web of "क्लाइंट / सर्वर ग्राकेशंस"

आपने सिर पर कील मारा है:

अजीब तरह से, जीके "किसी भी" मॉडल के लिए किसी भी अनुमति देता है।

यह एक सचमुच प्रभावशाली उपलब्धि है, तकनीकी रूप से, एप्पल द्वारा

परंतु !!! …….. यह एहसास करना बहुत महत्वपूर्ण है कि यह एक बहुत ही असामान्य विकल्प है। नेटवर्किंग में – गेम के लिए – आप लगभग हमेशा एक "सामान्य" क्लाइंट-सर्वर मॉडल चाहते हैं

सामान्य क्लाइंट-सर्वर "स्पोक" मॉडल का उपयोग करके नेटवर्किंग करने के बारे में कुछ 30 वर्षों में, एक विशाल मात्रा में विज्ञान स्थापित हो गया है। और वास्तव में, गेम प्रोग्रामिंग के लिए 99% बार आपको निश्चित रूप से ज़रूरत होती है, और चाहते हैं, एक मानक क्लाइंट-सर्वर "बात" मॉडल।

यह भालू दोहराता है:

(1) ऐप्पल ने जीके बनाकर एक असामान्य "पीअर टू पीयर" मोड बनाया

(2) यह तकनीकी रूप से आश्चर्यजनक है , लेकिन,

(3) यह उपन्यास पी 2 पी तकनीक वास्तव में, खेल के लिए बहुत ही विशिष्ट नेटवर्किंग प्रोग्रामिंग में इस्तेमाल नहीं किया जाएगा।

(4) बहुत भ्रामक रूप से: सभी दस्तावेज P2P मोड के बारे में बात करते हैं। यह भ्रमित है क्योंकि: यदि आप नेटवर्किंग प्रोग्रामिंग के लिए नए हैं, तो आपको लगता है कि यह "सामान्य" है। वास्तव में, यह बहुत संभावना है कि आप सामान्य सामान्य गेम बनाते समय पी 2 पी मोड का उपयोग कभी नहीं करेंगे।

दोहराना!

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

बस क्रिस्टल-साफ़ करने के लिए .. यह बहुत ज्यादा है, बहुत कुछ है !! एक सामान्य क्लाइंट-सर्वर "बोल" मॉडल का उपयोग करके वास्तविक जीवन नेटवर्किंग करना आसान है

पी 2 पी मोड "वास्तव में चतुर है" और आप निश्चित रूप से इसके साथ प्रयोग करने में कुछ समय व्यतीत कर सकते हैं। उदाहरण के लिए, यह सिर्फ जुड़ा हुआ डिवाइस के लिए "आसपास चैट करना" ठीक है।

लेकिन फिर (यदि आप एक नए नेटवर्किंग प्रोग्रामर हैं) तो आपको यह महसूस करना चाहिए कि यह एक नवीनता है आपको सामान्य, रोज़, क्लाइंट-सर्वर मॉडल का उपयोग करने के लिए प्रोग्राम करना होगा।

इसलिए ………………….

यह देखते हुए कि आप एक सामान्य रोज़ ग्राहक-सर्वर मॉडल में कार्यक्रम के लिए जा रहे हैं।

आपकी पहली नौकरी, अजीब पर्याप्त हो जाती है, पी 2 पी पहलू को अक्षम कर रहा है !!!!!

यदि आप जानते हैं कि यह कैसे काफी आसान है यह ठीक है कि यह कैसे करना है …

sessionMode:GKSessionModeServer .. on the server. sessionMode:GKSessionModeClient .. on the client. 

इसलिए, सामान्य क्लाइंट-सर्वर प्रोग्रामिंग के लिए, कहीं भी GKSessionModePeer का उपयोग न करें।

दूसरे, अपने ग्राहकों में मत भूलो, बस लागू नहीं करते हैंरेसीिव कनेक्शनअनुरूपफार्मपीयर:

अंत में अगर यह सब काम नहीं करता है! आपके क्लाइंट में, पीअर में: didChangeState:, आपको यह करने की आवश्यकता है …

 // so this is in the CLIENT... -(void)session:(GKSession *)session peer:(NSString *)peerID didChangeState:(GKPeerConnectionState)state { switch (state) { case GKPeerStateAvailable: // you have found the server!! // [session displayNameForPeer:peerID] self.theServerWeAreConnectedToPeerID = peerID; // you will definitely need to save that [session connectToPeer:theServerWeAreConnectedToPeerID withTimeout:0]; break; case GKPeerStateConnected: // MAKE SURE it's our server // not just some bizarre peers, etc etc. if ( [theServerWeAreConnectedToPeerID isEqualToString:peerID] ) { // you are connected - launch your tick or whatever } else { // completely ignore this! } break; case GKPeerStateDisconnected: if ( [theServerWeAreConnectedToPeerID isEqualToString:peerID] ) { // you have been disconnected from the server!! } else { // weirdly this is telling you that one of your sister // clients, has been disconnected from the server. IGNORE } break; // GKPeerStateUnavailable .. likely not relevant case GKPeerStateUnavailable: // do nothing, ignore break; // from the modern doco.. // "The delegate should ignore GKPeerStateConnecting changes // and implement the session:didReceiveConnectionRequestFromPeer: // method instead." .. blah blah .. for us that comment only // applies TO OUR SERVER, NOT here in the client. case GKPeerStateConnecting: // do nothing, ignore break; } } 

बस दोहराने के लिए यह बहुत संभावना है कि आप पी 2 पी मॉडल का उपयोग नहीं करना चाहेंगे: इसलिए, उपरोक्त सभी बताते हैं कि "कैसे पी 2 पी सामान को अक्षम करना है।"

एक बार फिर पूर्ण स्पष्टता के लिए दोहराएं:

जीके (आश्चर्यजनक) में एक पी 2 पी मोड है यह तकनीकी रूप से आश्चर्यजनक है आप निश्चित रूप से सरल नेटवर्किंग समस्याओं (विशेषकर चैट जैसी समस्याओं) के लिए P2P मोड का उपयोग कर सकते हैं। व्यवहार में, सामान्य क्लाइंट-सर्वर प्रतिमान में किसी भी वास्तविक गेम की सभी विशिष्ट नेटवर्किंग आवश्यकताएं (चाहे एफपीएस, स्पोर्ट्स गेम, या जो कुछ भी) किया जाना चाहिए (यह पी 2 पी मोड का उपयोग करना बेहद मुश्किल होगा।)

इस प्रकार, जीके में पी 2 पी प्रणाली को "उपयोग नहीं" करने का तरीका जानने के लिए "पहला कदम" के रूप में जरूरी है – जो लंबाई में ऊपर समझाया गया है।

(यदि आप पी 2 पी सिस्टम का उपयोग करना चाहते हैं – आप सभी तैयार हैं, इसके लिए जाएं !!)

जीके शानदार है अगर आप सभी बारीकियों को समझ सकते हैं जीके और एएसआईएचटीपीआरईईईईईस्ट के साथ, आप मूल रूप से कम से कम एक बुनियादी तरीके से कंप्यूटर के बीच कुछ भी कर सकते हैं।

इस प्रश्न ने सिर पर कील को मार दिया है …….. जीके (अत्यधिक असामान्य) पी 2 पी मोड है, और दस्तावेज पी 2 पी मोड पर केंद्रित है , जो नए लोगों के लिए भ्रमित हो सकता है फिर P2P अविश्वसनीय रूप से चतुर है, लेकिन एक नियम के रूप में आप P2P मोड नहीं चाहते हैं। आप चाहते हैं कि एक सामान्य क्लाइंट के साथ- सर्वर से बात किया मॉडल, जो कार्यक्रम के लिए असाधारण रूप से आसान है। आशा करता हूँ की ये काम करेगा!