3

マルチプレイヤーゲームを構築しているため、サーバーが起動したら、サーバー名を継続的にブロードキャストして、実行中のサーバーがあることをクライアントが認識できるようにします。サーバーに接続するための IP アドレスとポート番号を指定したくありません。誰かがサーバー名をブロードキャストするのを手伝ってくれますか?

  • ウェブアプリではなくアプリです。
4

2 に答える 2

8

SO には、すでにこれについて話している自動応答の質問があります: LAN クライアントがサーバーを検出できるようにする方法

同じ手法を使用して、ローカル ネットワーク内のサーバーを要求できます。

ビデオゲームにおけるアプローチ (YMMV) は次のとおりです。

  • サーバーが起動し、ブロードキャストにバインドします。
  • クライアントが起動し、ブロードキャストにバインドします。
  • クライアントは、サーバーを要求するブロードキャスト メッセージを送信します。
  • サーバーは、クライアントからブロードキャスト メッセージを受信し、それらに関する別のブロードキャストで応答します (サーバーは、そのメッセージを 1、2 秒後に再送信することがあります。
  • クライアントは数秒間待機し、応答しているすべてのサーバーの情報を記録します。
  • クライアントはサーバーのリストを提示し、プレーヤーにいずれかを選択するように依頼します。
    • おそらく、プレイヤーがサーバーリストページにアクセスしている間、前のステップを並行して実行し続けたいと思うでしょう。
  • クライアントはブロードキャストからバインドを解除し、プレイヤーが選択したサーバーに接続しようとします。
    • 通常、ポートも選択できますが、この接続用のデフォルト ポートはゲーム内でデフォルトで使用できます。この方法では、ポートが変更されていない場合、メッセージでサーバー ID をブロードキャストする必要さえありません...
  • 誰もがメッセージのブロードキャストでネットワークを飽和させるのをやめます!!! :P

インターネット経由でサーバーを検出するには、何らかの通知サービスが必要です。ネットワークには、Android ネットワーキング ゲームの時代から人気のある、一般的な検出サービスとして機能する多くのオプションがあります。

于 2013-09-26T16:41:33.190 に答える