2011-07-03 45 views
4

我想獲得的WiFi熱點IP地址(從另一臺計算機),Android設備連接通過WiFi,不是IP本地的Android。我在真實設備上運行應用程序。 我可以掃描所有的wifi並獲取它們的名稱。從Android的熱點IP獲取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,但如何讓無線網絡的IP代碼中的熱點是192.168.2.1。 謝謝!

回答

0

並非所有的WiFi接入點甚至都有IP地址!這不是要求。它在不同的層上運行。這就是說,你可以使用AP的無線MAC上的反向ARP來獲得它的IP地址,如果有的話。另請注意,此IP有時與有線接口不同。

對於家庭多合一無線路由器,您還可以檢查DHCP分配的任何網關地址,但同樣,這與接入點沒有直接關係。

+1

謝謝!但問題是我必須使用套接字來連接它,除非我有一個IP地址,我不知道該怎麼做(我嘗試使用wifi名稱,但它不起作用)你有什麼建議嗎? – R4j

+0

連接到它什麼? – Brad

+0

通過無線連接遠程連接PC(例如關機,重啓,遠程PowerPoint幻燈片...)。我試圖使用靜態IP的android devide(如上)和PC來測試。有效。問題是我不知道如何從代碼獲取PC的IP。 – R4j