簡體   English   中英

獲取Android網絡接口IP地址

[英]Get Android network interface IP address

我正在為Android編寫一個wifi直接應用程序。 我正在嘗試與設備建立套接字連接。 由於組所有者意圖功能似乎不起作用(它只是隨機分配)我必須找到一種方法將客戶端IP地址傳輸到主機。 我所知道的唯一地址是WifiP2pManager可以獲取的組信息對象中的主機設備。 我知道哪個設備是主機,哪個設備是客戶端,所以我可以打開一個套接字連接到達或嘗試連接到另一個。

我需要做的是找到一種方法來轉移設備的Wifi P2P(Wifi Direct)客戶端的IP地址,如果'主機'設備是組所有者。 如果主機是組所有者,則無法連接到客戶端上的套接字。 它有點令人困惑,但它是如何工作的。

我已經看到了從ARP表中獲取IP地址的事情,但是ARP表似乎在幾秒鍾之后(如一分鍾)和ICS上自行清除,因為wifi接口被禁用Wifi直接我甚至都沒有看到arp表中的任何內容。

我覺得這應該很容易,但我不是一個大的Linux用戶,所以我不知道什么文件將保持網絡接口配置。 有沒有辦法獲得網絡接口的IP地址? 或者至少是Wifi P2P界面? (注意:這不是wifi地址。除了Wifi Direct之外,它類似於網絡共享地址.WifiManager不會返回此信息)

謝謝,
Mgamerz

DhcpInfo dhcpInfo = (WifiManager)this.context.getSystemService(Context.WIFI_SERVICE)).getDhcpInfo();
String ipaddress = intToIp(dhcpInfo.ipAddress)

intToIp(int integer) {
        return (integer & 0xFF) + "." + ((integer >> 8) & 0xFF) + "."
                + ((integer >> 16) & 0xFF) + "." + ((integer >> 24) & 0xFF);
    }

上面的代碼應該可以幫助你獲得ipaddress ......

獲取通過您可能使用的套接字連接到主機的客戶端的IP地址.. clientSocket = this.serverSocket.accept(); clientSocket.getInetAddress();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM