Android では...アクティブなソケットのセット (<10) が与えられると、私のブロードキャスト レシーバーは ConnectivityManager から接続ステータスが変更されたことを示すインテントを取得します。インテントを問題のあるソケットに関連付けるにはどうすればよいですか?
インテントから NetworkInfo を取得できます。
final ConnectivityManager cm =
(ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
final NetworkInfo netinfo =
ConnectivityManagerCompat.getNetworkInfoFromBroadcast(cm, aIntent);
これにより、インターフェイスの種類がわかります。ソケットを使用して NetworkInterface を取得することもできます。
final InetAddress sourceAddr = socket.getLocalAddress();
final NetworkInterface ninterface =
NetworkInterface.getByInetAddress(sourceAddr);
しかし、ここから先に進む方法が見えません。
ソケットに関連付けられた NetworkInfo を取得する方法はありますか?
インターフェイス名とネットワーク タイプの間のマッピングを手動で作成することを検討しています。このマッピングは、硬化初期化でロードされます。これは基本的に、ip または netstat コマンドを実行するときに視覚的に行っていることです。