2014-05-02 59 views
2

如果我有一個連接的對等數組,我們假設3(a-> b,a-> c,a-> d) 並且我只想斷開對等點「c」,應該怎麼做?從MCSession斷開單個對等點?

我見過一個響應類似的問題的狀態,你只能從會話斷開「自己」:這意味着在上述情況下,如果我這樣做:

[mySession disconnect]; 

,我全部斷開「b」,「c」和「d」同時出現「a」。 所以建議發送一個通知給你想要斷開連接的對方(「c」),並告訴它與會話斷開連接。

但是,我也看到了這一點,並想知道,如果它確實我在問什麼 - 只刪除特定的同行:

[mySession.connectedPeers[0] disconnect]; 

編輯:我剛剛意識到這是一個只讀屬性,因此忽略這部分。

還是有另一種,也許更好的方法來刪除特定的同齡人?

回答

3

每個對等連接都由一個MCSession實例表示。 所以,在你的榜樣,你將有3個獨特的指針MCSession對象:

MCSession *p1 = a->b 
MCSession *p2 = a->c 
MCSession *p3 = a->d 

因此斷開對等端C,你會:

[p2 disconnect]; // release the session 
p2 = nil; // release the resource 

當然,你也可以存儲在一個可變數組會議,然後做同樣的邏輯,但是從陣列使用指針

p2 = (MCSession *)[array objectAtIndex:1]; 
[p2 disconnect]; 
[array removeObjectAtIndex:1]; 
+0

我一定很迷茫,然後 - 我的印象是一個「會話」例如可以有多個同行CON正如我在我的問題中所展示的那樣。你是否說每個會話只能有一個對等體,並且必須保留一組會話,每個會話只有一個對等體? – wayneh

+0

完全沒有。在你的問題中,你剛纔說過你有一系列關聯的同伴 - 而不是你如何連接他們。在單個會話中,可以有多個對等體(最多8個),或者在我的情況下,由於框架當前不太穩定狀態的解決方法,我保持每個會話在對等體之間1:1的關係。 AFAIK當你「斷開連接」時,你告訴MPC你在該會話中連接的所有對等點都需要斷開連接。如果您想要更好的粒度,請採用1:1方法 – 300baud

+0

似乎合理,特別是因爲在單個會話中有多個數字時,似乎沒有辦法斷開特定的對等方。謝謝。讓我們看看現在是否有人不同意我已經接受你的回答.... – wayneh