簡體   English   中英

主服務器的Java TCP保持活動狀態

[英]Java TCP keep-alive for a master server

上下文 :主服務器(Java,TCP)監視托管游戲列表(主服務器和每個托管游戲服務器的不同機器)。 任何用戶都可以在他的PC上托管游戲。 托管游戲可持續數周或數月。

需要:了解托管游戲服務器何時關閉或無法再訪問。

限制1:不能依賴托管服務器的“離線更新消息”,因為這些消息可能永遠不會到達(斷電,互聯網鏈接切斷等)

限制2:我不確定TCP的內置keep-alive,因為它意味着每個托管服務器都有一個24/7開放套接字(如果我錯了,請糾正我)

有什么想法嗎?

考慮使用某種心跳消息。 這些消息(“我還活着!”)會定期發送,如果主服務器沒有從托管服務器獲取心跳消息(一段時間),它就知道這個托管服務器不可用。

如果您需要托管服務器的更多詳細信息(例如“完全可操作”,“在5分鍾內進行維護”等),您甚至可以為此消息添加一些狀態參數。

聽起來你正在遇到所謂的“雙軍問題”,“協調攻擊問題,或者,正如安德烈亞斯D所說,你已經確定為你的限制的兩個一般問題 1.這背后的想法問題是兩支軍隊想要協調對敵人的攻擊。他們需要同時進行攻擊,因為每個軍隊都知道如果他們自己攻擊就會死亡。

問題在於:一支軍隊如何知道他們的信使,他們正在攜帶協同攻擊所需的時間,已成功抵達另一支軍隊? 此外,第二軍如何確定第一支軍隊知道他們收到了消息並計划進攻? 軍隊之間的任何信息都可能無法成功到達,因此軍隊無法確定它們是否正確協調。

因此,最簡單的答案可能是在預定的時間間隔內對每個正在運行的游戲執行ping操作,並且每當用戶請求刷新時也是如此。 您可以使用此信息填充主列表。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM