2

私はDebianサーバーを持っています。このサーバーは、自宅の Wi-Fi で iPhone が利用可能かどうかを確認する必要があります。問題は、モバイルデータが利用可能な場合、i-Devices が wi​​fi モジュールを安全な電力に一時停止することです。したがって、1 つの解決策は、モバイル データをオフにするだけで、Wi-Fi での検出が正常に機能することです。(しかし、これは私にとって本当の解決策ではありません。なぜなら、家にいるたびに手動でこれを行うのは面倒で、他の人もこのソフトウェアを使用するからです。)

これまでに iPad Mini と iPhone5 (ios7) でテスト済み:

  1. 私はAndroidのタスクを完了しました。Androidでは、ネットワーク接続が変更された場合にブロードキャストがあるため、プログラムでブロードキャストをキャッチし、Debianboxに登録するだけです。iDevice で同じことを試みましたが、バックグラウンドで Objective-C の Wifi-Status-Changes をインターセプトできないようです。フォアグラウンドでは、Apple-Reachability-Class を通じて可能です。しかし、バックグラウンドで必要なので、これは不可能です。

  2. iPhone のすべてのポートをスキャンし、Wifi モジュールが起動することを期待してリクエストを実行してみます。

    • UDP ポートを開く:

      • ポート ステート サービス バージョン
      • 999/udp open|filtered applix
      • 1090/udp オープン|フィルタリングされた ff-fms
      • 5001/udp open|filtered commplex-link
      • 5353/udp open|filtered zeroconf
      • 18134/udp オープン|フィルタリングされた不明
      • 19141/udp オープン|フィルタリングされた不明
      • 19717/udp オープン|フィルタリングされた不明
      • 20919/udp オープン|フィルタリングされた不明
      • 21354/udp オープン|フィルタリングされた不明
      • 31625/udp オープン|フィルタリングされた不明
      • 49191/udp オープン|フィルタリングされた不明
      • 57409/udp オープン|フィルタリングされた不明
    • TCP ポートを開く:

      • ポート ステート サービス バージョン
      • 62078/tcp オープン tcpwrapped

    ポート 5353 UDP (Bonjour/MDNS)でnetcatを使用してリクエストを作成しようとしました。その結果、iDevices は最初の 30 分で実際に wifi モジュールを起動します。その期間の後、リクエストがwifiモジュールをウェイクアップした場合、それは一種の運です。たぶん30分くらいで「深い眠り」が来ていると思います。

  3. Wi-Fi ホットスポットとしての MacBookPro と、これに接続された iDevices。次に、Wireshark を使用してトラフィック全体を盗聴し、Wifi 経由で送信されたメッセージを確認しました。少なくとも、すべての iOS7 デバイスによって行われる MDNS マルチキャストが見つかりました。このメッセージは、小さな Python サーバーでキャッチできます。-> 動作しますが、デバイスがマルチキャストを送信する期間は 1 分から最大 30 分以上であるため、安定していません。

  4. 創造的な方法: iDevice をウェイクアップするためのサイレント プッシュ通知。その後、wifi での ping が可能です。つまり、プッシュ通知は私の Wi-Fi を起動するだけです。-> 動作しますが、APN サーバーはプッシュ メッセージが配信されたかどうかを通知しないため、あまり信頼できません。これをテストしたところ、APN サーバーがメッセージを「飲み込む」ことがありました。そして、5 分ごとにインターネット接続とモバイル データ トラフィックをチェックして、デバイスが Wi-Fi に接続されているかどうかを確認します。これはベスト プラクティスとは言えません。しかし、これまでのところバッテリー寿命の最良の解決策です。

  5. ジオフェンス リージョンで自宅にいることをトリガーします。これは可能で機能しますが、バッテリーのコストが非常に高くなります。しかし、おそらく他に良い解決策はありません。

  6. arp-scan は、ip-range に対して arp-request を行うツールです。モバイルデータがオンになっている場合、これは機能しません。

だから私の質問:

  • iDevice の wifi モジュールをウェイクアップするために送信できる特定のポートにリクエストはありますか?
  • このタスクを解決する客観的な方法はありますか?
  • MDNS リクエストを送信できますか? iDevice はそれに応答しますか?
  • バックグラウンド リスニング ソケットと Debianbox がそれに接続するアプリを作成できますか?
  • このタスクを解決できる他のアイデアはありますか? 私はアイデアがありません。

ありがとう

4

2 に答える 2