2016-07-05 66 views
1

簡短版本:如何禁止廣播時,如何建議將客戶端連接到位於同一本地網絡上的服務器,而無需手動輸入IP?沒有廣播的局域網上的網絡發現


更多細節:我工作的教育多人遊戲爲兒童。出於安全原因,許多學校似乎阻止了廣播。孩子們會比較年輕,所以對他們來說很難,而且很容易出錯,不得不手動輸入IP。他們都將在同一個房間內,並且都將看到服務器屏幕。遊戲是在Unity(C#)中完成的。


潛在的解決方案:這就是我想過:

  • 無論是本地服務器和客戶端連接到外部服務器,通過外部服務器進行通信,通過客戶端的本地服務器的IP,然後直接連接並從服務器斷開連接。不理想,因爲額外的託管成本。
  • 定期向子網上的所有IPS發送常規UDP消息?這可能會被任何體面的防火牆拿起並阻止,對吧?
  • 將QR碼放在服務器上,孩子們會用客戶端應用程序拍攝照片並將其連接到該服務器上?可能會更麻煩。
  • 讓服務器播放與客戶端正在監聽的號碼相對應的隨機鈴聲? (音箱可能並不總是工作)

聽起來像第一個是最理智和最簡單的解決方案。對於這種情況下的人可以嘗試什麼,你有什麼其他想法嗎?

回答

0

我能想到的是所有設備之間的ad-hoc通信協議。假設你有1個服務器和10個客戶端。所有的設備都應該運行一個綁定到固定端口的服務(比如服務器發現),如9999.現在,當客戶端想要連接到服務器並且不知道IP時,它就開始掃描。循環通過不同的IP並嘗試連接到9999.如果它擊中了,它會請求服務器IP。如果它設法擊中服務器,它將獲得IP,因爲服務器知道它是自己的IP,並且客戶端會將服務器IP保存在緩存中。如果客戶端點擊另一個客戶端。它可以請求服務器IP。它的另一個客戶端知道IP會共享信息,否則會下降。 我同意有很多開銷,但我認爲這將是健全的不同於聲音,並會減少每次打印QRs的成本。

+0

謝謝,這可能是一個好主意,這樣不是每個客戶端都需要ping每個設備。 該QR碼將出現在服務器屏幕上,因此它不應該花費任何費用。 – Oana

+0

哦,如果QR出現在屏幕上,那應該是完美的解決方案。 –

1

是否可以使用UDP多播? 如果是,那麼常見的解決方案是所有參與者加入相同的多播組,並且服務器在衆所周知的端口上偵聽。如果客戶端想知道服務器的地址,它就會向多播組發送一個數據包,客戶端會收到該數據包,然後用另一個數據包進行應答,然後客戶端可以使用該數據包來確定服務器地址。 除此之外,服務器還可以通過向多播組發送合適的消息來定期通知其存在。

0

本地網絡上的流量是從主機到主機的直接流量。 我不明白哪些設備阻止本地廣播。

如果局域網上沒有太多對等點(小於100),我認爲udp廣播工作正常,並且不污染網絡。

有一個你的「池塘」的想法,我建議你嗅探你當地的交通。 有很多廣播:arp,windows,ipp,dropbox ...