winsockets を使用して、自分のゲームを LAN でプレイできるゲームに変える方法を見つけようとしています。winsockets のドキュメントをいくつか読みましたが、クライアントが LAN 上で作成されたすべてのゲームを取得する方法がわかりません。
192.168.0.1 に接続してから 192.168.0.2 に接続するなど、LAN 上の各 IP に「接続」する必要がありますか? より良い方法はありますか?
winsockets を使用して、自分のゲームを LAN でプレイできるゲームに変える方法を見つけようとしています。winsockets のドキュメントをいくつか読みましたが、クライアントが LAN 上で作成されたすべてのゲームを取得する方法がわかりません。
192.168.0.1 に接続してから 192.168.0.2 に接続するなど、LAN 上の各 IP に「接続」する必要がありますか? より良い方法はありますか?
ブロードキャストを使用して、LAN 上のサーバーをアドバタイズします。その後、クライアントはこれらのブロードキャストをリッスンしてサーバーを「検索」できます。
詳細については、こちらをご覧ください: http://tangentsoft.net/wskfaq/intermediate.html#broadcast
これを行うには2つの方法があると思います。
クライアントとサーバーが接続する「ロビー」を作成して、それを介してお互いを見つけられるようにします。
サーバーはUDPパケットをブロードキャストします。クライアントはサーバーのリストをリッスンして更新します。
すばやく簡単な方法が必要な場合は、2番目のオプションが最適ですが、UDPパケットはクライアントごとに一度だけ使用されるため、ほとんどのUDPパケットが無駄になることを覚えておいてください。
最初のオプションは、この問題に対するより一般的で拡張性のあるソリューションです。ただし、設計と実装にはさらに時間がかかる場合があります。
通常、これらのゲーム サーバーはローカル UDP ブロードキャストを使用します。これは、すべてのクライアントが受信し、リッスンしている限り処理できます。
以下は、私が見つけたいくつかのクライアントとサーバーのサンプル コードです。
まず、ネットワーク開発のためにwiresharkを入手することをお勧めします。どのパケットが回線を通過するかが表示されます。これを行うには多くの方法があるため、他のゲームがどのように行うかを確認できます。
UDP ブロードキャストを使用することは、それを行う 1 つの方法です。ターゲット IP の最後のバイトを 255 に変更するだけで問題ありません。