2011-07-03 13 views
4

私はアンドロイドデバイスがwifi経由で接続するwifiホットスポット(他のコンピュータから)のIPを取得したい、androidのIPローカルではありません。私は実デバイスでアプリケーションを実行します。 私はすべてのWi-Fiをスキャンして、それらの名前を取得できます。もちろんアンドロイドのwifiホットスポットからIPを取得する

public class WifiConnectorActivity extends Activity { 
    TextView mainText; 
     WifiManager mainWifi; 
     WifiReceiver receiverWifi; 
     List<ScanResult> wifiList; 
     StringBuilder sb = new StringBuilder(); 
    /** Called when the activity is first created. */ 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     mainWifi = (WifiManager)getSystemService(Context.WIFI_SERVICE); 

     mainText = (TextView) findViewById(R.id.text); 
     mainWifi = (WifiManager) getSystemService(Context.WIFI_SERVICE); 
     receiverWifi = new WifiReceiver(); 
     if(!mainWifi.isWifiEnabled()){ 
      mainWifi.setWifiEnabled(true); 
     } 
     registerReceiver(receiverWifi, new IntentFilter(
      WifiManager.SCAN_RESULTS_AVAILABLE_ACTION)); 
     mainWifi.startScan(); 
     mainText.setText("\nStarting Scan...\n"); 
    } 



    class WifiReceiver extends BroadcastReceiver { 
     public void onReceive(Context c, Intent intent) { 
     StringBuilder sb = new StringBuilder(); 
     wifiList = mainWifi.getScanResults(); 
     for(int i = 0; i < wifiList.size(); i++){ 
      sb.append(new Integer(i+1).toString() + "."); 
      sb.append((wifiList.get(i)).toString()); 
      sb.append("\n"); 
     }  

     mainText.setText(sb); 
     } 
     } 


} 

、私が使用してIPがローカルにこのコードを取得することができます

public static String getLocalIpAddressString() { 
      try { 
       for (Enumeration<NetworkInterface> en = NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) { 
        NetworkInterface intf = en.nextElement(); 
        for (Enumeration<InetAddress> enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements();) { 
         InetAddress inetAddress = enumIpAddr.nextElement(); 
         if (!inetAddress.isLoopbackAddress()) { 
          return inetAddress.getHostAddress().toString(); 
         } 
        } 
       } 
      } catch (Exception ex) { 
       Log.e("IPADDRESS", ex.toString()); 
      } 
      return null; 
     } 

例えば、私が見ることができるIPのAndroidデバイスのローカルは192.168.2.101ですが、どのように無線LANのIPを取得しますホットスポットはコードで192.168.2.1です。 ありがとう!

答えて

0

すべてのWiFiアクセスポイントにIPアドレスがあるわけではありません。それは要件ではありません。それは別の層で実行されます。

APの無線MACで逆ARPを使用してIPアドレスを取得することができます。また、このIPは有線インタフェースとは異なることがあります。

ホームオールインワンワイヤレスルータでは、DHCPがゲートウェイアドレスとして割り当てるものをチェックすることもできますが、これもまたアクセスポイントとは直接関係しません。

+1

ありがとうございます!しかし、問題は私がIPアドレスを持っていない限り、私はそれを接続するためにソケットを使用しなければならない、私は(私は無線LANの名前を使用しようとするが、それは動作しません)どのように示唆を持っているかわからない? – R4j

+0

何に接続しますか? – Brad

+0

wifi経由でリモートのPCに接続します(シャットダウン、再起動、リモートのPowerPointスライドなど...)。私はアンドロイドdevide(上記のような)とPCをテストするために静的IPを使用しようとしました。出来た。問題は、コードからPCのIPを取得する方法がわからないことです。 – R4j

関連する問題