2017-03-05 19 views
1

嗨我一直在思考這個問題,現在看起來似乎無法得到答案。
我的問題是。網絡服務器連接是否像統一c#中的列表?是網絡服務器連接,就像一個統一的列表?

我在這樣想。 可以說我們有兩個連接到服務器的播放器。

player_1 = connectionId 0 
player_2 = connectionId 1 

如果讓我們說player_1斷開連接會發生什麼。這會讓player_2下移到第一排並獲得player_1的連接ID嗎?

player_1 = disconnected(no connectionId then) 
player_2 = connectionId 0 

還是他會留在同一個connectionId?如果是的話,如果第三個玩家連接會發生什麼?他會被設置在線前,並採取player_1的舊connectionId?

player_3 = connectionId 0 
player_2 = connectionId 1 

還是會將他設置在行後?並獲得新的ConnectionId

player_1 = disconnected(no connectionId then) 
player_2 = connectionId 1 
player_3 = connectionId 2 

回答

1

如果讓我們說PLAYER_1斷開會發生什麼。是否會使 player_2向下移動到第一排並獲得 player_1的連接ID?

還是他會留在相同的connectionId?如果是的話,如果第三個玩家連接,會發生什麼 ?他會被設置在線前, 採取player_1的舊connectionId?

每個連接都得到唯一 ID。

每當你感到困惑時,請閱讀API的Documentation。從DOC

引用:

此連接由所述 傳輸層分配唯一標識符。

在服務器上,此Id對於服務器上的每個連接都是唯一的。在 客戶端上,此Id對客戶端來說是本地的,它與服務器上用於此連接的Id 不同。

所以,ID保持-同一時其它 NetworkConnection被連接或斷開。

NetworkConnection.connectionId值可能更改的唯一時間是設備/客戶端斷開連接並再次連接。在這種情況下,它在再次重新連接時給出另一個ID,但這不應該影響仍然連接的設備/客戶端。他們的ID仍然應該保持不變。

+0

「唯一一次NetworkConnection的值。connectionId可能是 更改是當設備/客戶端斷開並再次連接。 在這種情況下,當它再次重新連接時,它會給出另一個ID「 但是之後發生的事情是舊的connectionId?他曾經擁有過嗎?是給予其他玩家嗎?還是永遠不會使用? – TheSand

+0

不確定我嘗試做一個快速測試,但是在我這邊有一個'NetworkConnection.connectionId'的錯誤,它總是返回0,我建議你嘗試一下,看看斷開連接的項目是否被分配了新的ID或者使用舊的ID – Programmer

+1

@程序員很好的解釋 –

相關問題