2011-01-21 10 views
0

自分のゲームにマルチプレイヤーサポートを追加したいので、TcpListenerを開いてリクエストを接続するのを聞く「Create Server」ボタンを作成し、ボタンを押すと、開いているすべてのTcpListenerのリストが表示されます(ユーザが接続をクリックできるようにします) C#でこれに組み込み関数がありますか?C#開いている "TcpListeners"のリストを取得する方法

答えて

0

残念ながら、このためのIPまたはTCP仕様のこの機能は、 IPもTCPも、「サービス・ロケータ」タイプの機能を提供しません。

この機能を実装するには、サーバーを実行しているプレーヤが接続情報(IPアドレス/ポート番号)をゲームを探している他のプレイヤーにブロードキャストする方法が必要です。これは伝統的に利用可能なゲームの情報を公開するホスト/コーディネーションサーバーを持つことによって行われます。

3

ネットワーク上のすべてのマシン(またはインターネット全体)のすべてのリスナーのリストが必要ですか?答えはいいえ、そのための組み込み関数はありません。

小規模なLANでは、サーバーが存在をブロードキャストすることができます。これは、インターネットが登場する前にゲームが通常それをした方法です。

現在、これらのサーバーは通常、実際のゲームをホストしているすべてのサーバーの一覧を持つ中央サーバーに接続します。

いずれにしても、いくつかの作業が必要です。

+0

sry私は十分正確ではありませんでした.LANの使用のためだけです –

+0

この場合、クライアントはUDPポートでリッスンし、サーバーはそのポートでプレゼンスをブロードキャストします。クライアントは、UDPパケットが送信されたアドレスのサーバーに再び接続できることを認識します。また、サーバー名、ゲームの種類、プレーヤーの数など、パケットにいくつかのデータを置くことができます... – Thomas

0

ローカルエリアネットワークに限定している場合は、ゲームサーバーがリッスンしているポートでブロードキャストでき、何らかの登録メッセージで応答することができます。

ゲームを妨害しないように、ゲームを分けることもできますし、ゲームとは異なるポートでリッスンする別の登録サービスを利用することもできます。

関連する問題