私はネットワークプログラミングにあまり経験はなく、各デバイスが同じLAN内の他のデバイスを見つけることができるマルチプラットフォームシステムを作成しています。正しいアプローチとここの人々は私にいくつかの勧告を提供することができてもよい、ここに私の設計要件があり、LAN上でデバイスディスカバリを実装する最良の方法は何ですか
私はC++およびソリューションを使用していますのiOS、Windows上で実行するためにどの少なくともことができ、クロスプラットフォームである必要が、Android。
システムはかなり軽量で、できるだけ特別な設定やネットワーク要件の下で作業する必要があります。ここで
は、私はUPnPプロトコルを使用して、これまでに
をブレーンストーミングしていますが、私はそれに非常に精通していないですし、使用する方法について多くの例があるようですしていない別のアプローチがありますそれはコードです。
従来のソケット手法を使用して、各デバイスにServer/Clientの両方を作成し、LAN上のすべてのIPにデータパケットを送信します。その後、すべて手作業で行う。もし私が間違っていれば私を修正してください。ブロードキャストアドレスにパケットを送ると、システムは自動的にパケットをサブネット内のすべてのIPに送信しますか?
すべてのクライアントがその外部サーバーに登録し、サーバーから他のクライアントの情報を取得する外部サーバーを使用します。しかし、私は、各クライアントが同じLAN内にいるかどうかを判断するためにどのクライアントに接続するべきかについてはわかりません。
私が考えていることが何か考えていて、助言をいただければ幸いです。
ブロードキャストアドレスにUDPパケットを送信し、後で通常の接続を確立するための設定情報が一般的です。ブロードキャストに送信されたパケットは、そのサブネット内のすべてのデバイスに送信されます。舞台裏で何が起こるかを知るためにWiresharkを発射することをお勧めします。 – Brad
情報をありがとう、しかし、私はルータがブロードキャストを停止するためにセットアップすることができ、通常はLANのデフォルトであると聞いた。本当?そして、はいの場合、そのような方法はあまり信頼性がありません – NachoChip
いいえ、ルータはあなたのネットワークと別のネットワークの間に行きます。ブロードキャストパケットはネットワークにのみ送信されるため、ルータの設定に影響はありません。さらに、ルータがこれを行うことができれば、ネットワークは機能しません。ブロードキャストパケットは、DHCP、UPnP、Bonjour(Markoの回答など)などの基本機能にとって重要です。 – Brad