WiFi経由でスマートフォンを使用してラップトップと他のスマートフォンに接続したい。アプリ (Android) を作成しましたが、wifi ネットワークのみを見つけることができ、デバイスは見つかりません。スマートフォンとラップトップを見つける方法を知っている人はいますか?
2 に答える
あなたの質問から、あなたのスマートフォンは Android ベースだと思います。また、「デバイスが見つかりません」と言うときは、ラップトップによって作成された WLAN ネットワークを意味していると思います。
Android のドキュメントのどこかで、Android デバイスがアドホック ワイヤレス ネットワークに接続できない (または検出さえできない) ことを読んだことを思い出したようです。通常、アドホック ネットワークは、非専用ネットワーク デバイス (Windows コンピューターなど) によってホストされるネットワークです。
一部のユーティリティ ソフトウェアを使用して、コンピュータを使用して (アドホックではなく) インフラストラクチャ タイプのワイヤレス ネットワークを作成できる場合があります。それ以外は、たとえばネットワークルーターによってホストされている実際のインフラストラクチャワイヤレスネットワークを使用し、必要なデバイスをそれを介して接続することにかなり制限されています。これは基本的に通常の (W)LAN 使用シナリオです。
良い質問!WiFi は、Bluetooth やその他のプロトコルとは異なり、ネットワーク内の他のデバイスを検出することはできません。WiFi ネットワーク上の他のデバイスを見つけるには、TCP スタックの上位層でアプリケーションを実行する必要があります。次に、TCP または UDP パケットをすべてのデバイスに送信し、応答が返ってきたら、他のデバイスがネットワーク内にあることをほぼ確認できます。これは非常に脆弱なプロセスであり、多くの障害 (ファイアウォールなど) によって検出プロセスが妨げられる場合があります。そのため、Windows がネットワーク プリンターまたはネットワーク コンピューターを検出するのを待つ必要があります。
Java/Android (またはその他のプラットフォーム) でこのようなことを実装するための最も簡単な方法は、バックグラウンド スレッドを実行し、ブロードキャスト メッセージをリッスンするアプリケーションを作成することです。(ディスカバー側で) ディスカバリー・プロセスを開始したい場合は、ブロードキャスト・メッセージを送信して応答を待ちます。反対側 (discover-ee 側) では、ブロードキャスト メッセージを受信した場合は、必要な情報 (デバイスの名前など) をメッセージに返信するだけです。(discover-er で) 応答メッセージを受信すると、ネットワーク内にある他のデバイスを簡単に見つけることができます。
または、TCP ソケットを使用してプローブすることもできます。この場合、ブロードキャスト メッセージがサポートされていないため、ネットワーク内の可能なすべての IP アドレス (通常、これは少なくとも 255 個の IP アドレス) への接続を試行する必要があり、プロセスが大幅に遅くなります。
これは役立つかもしれません。