2012-10-18 29 views
5

यदि डिवाइस को कनेक्ट करने का प्रस्ताव समूह के मालिक के रूप में विलुप्त हो गया था, तो हम अन्य डिवाइस के आईपी पते को कैसे जान सकते हैं? हम समूह के मालिक के आईपी प्राप्त कर सकते हैं, लेकिन मुझे नहीं पता कि गैर-समूह के मालिक के आईपी कैसे प्राप्त करें। चूंकि यह डिवाइस नहीं था जिसने कनेक्ट करने के लिए कहा था, इसमें वाईफाईपी 2 पीइन्फो क्लास नहीं था। यह समूह के मालिक के आईपी को भी नहीं जानता है। मैं इस डिवाइस से डेटा मालिक को डेटा कैसे भेज सकता हूं?वाईफाई डायरेक्ट में गैर-समूह के मालिक का आईपी पता कैसे प्राप्त करें?

अग्रिम धन्यवाद!

+0

क्या आपको उत्तर मिल गया ???? यदि हां, कृपया साझा करें, मुझे इसकी आवश्यकता है। –

उत्तर

1

आप दोनों सहकर्मियों के स्थानीय आईपी पते ला सकते हैं और समूह के मालिक आईपी के साथ तुलना कर सकते हैं। आप पहले से ही पता हो सकता है आप आसानी से कोड की इस पंक्ति के साथ समूह के स्वामी आईपी प्राप्त कर सकते हैं:

: नीचे संबंधित विधियों के साथ

localIp = getDottedDecimalIP(getLocalIPAddress()); 

:

WifiP2pInfo.info.groupOwnerAddress.getHostAddress(); 

स्थानीय IP के लिए आप बस इस का उपयोग कर सकते

private byte[] getLocalIPAddress() { 
    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()) { 
        if (inetAddress instanceof Inet4Address) { 
         return inetAddress.getAddress(); 
        } 
       } 
      } 
     } 
    } catch (SocketException ex) { 
     // Log.e("AndroidNetworkAddressFactory", "getLocalIPAddress()", ex); 
    } catch (NullPointerException ex) { 
     // Log.e("AndroidNetworkAddressFactory", "getLocalIPAddress()", ex); 
    } 
    return null; 
} 

private String getDottedDecimalIP(byte[] ipAddr) { 
    if (ipAddr != null) { 
     String ipAddrStr = ""; 
     for (int i = 0; i < ipAddr.length; i++) { 
      if (i > 0) { 
       ipAddrStr += "."; 
      } 
      ipAddrStr += ipAddr[i] & 0xFF; 
     } 
     return ipAddrStr; 
    } else { 
     return "null"; 
    } 
} 
+1

धन्यवाद। सॉकेट कनेक्ट होने पर मुझे socket.getInetAddress() के माध्यम से आईपी मिला। –

+0

सैमसंग गैलेक्सी ग्रैंड 2 पर काम नहीं करता जैसा मैंने परीक्षण किया था। इस तरह से आईपी नहीं मिल सकता है। – David