如何在同一网络上以编程方式获取其他支持Wifi的设备的IP地址?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在同一网络上以编程方式获取其他支持Wifi的设备的IP地址?相关的知识,希望对你有一定的参考价值。

在我的android手机中,我点击了手机,看到了设置 - >无线控制 - > Wifi设置,并点击了我连接的网络。它弹出一个Dialog,其中包含网络状态,级别,速度,信号强度,IP地址和安全类型。所以我只得到了网络的IP地址。

如何通过提供(从我的手机获得的已知IP地址)作为输入来获取其他支持wifi的设备的IP地址?

实际上要明确,如何将特定的已知IP地址作为输入,并且必须能够在Android 2.3中以编程方式获取连接在同一网络上的Wifi设备的其他未知IP地址?

答案

要获取IP地址,您可以在getIpAddress()中查看WifiInfo

伪代码,

 WifiManager mWifiManager = (WifiManager) 
                                     getSystemService(Context.WIFI_SERVICE);
 WifiInfo mWifiInfo = mWifiManager.getConnectionInfo();
 Log.e("IP in Mask Integer", mWifiInfo.getIpAddress()+"");
 Log.e("IP Address", intToIP(mWifiInfo.getIpAddress())+"");

public String intToIP(int i) {
       return (( i & 0xFF)+ "."+((i >> 8 ) & 0xFF)+
                          "."+((i >> 16 ) & 0xFF)+"."+((i >> 24 ) & 0xFF));
} 
另一答案

要在同一网络中查找其他设备,您需要扫描该网络。

扫描意味着找到子网中可能的IP(使用您的IP地址和子网掩码,您可以找到可能的范围,通常是家庭路由器,它位于xxx1~xxx254之间)然后迭代这些IP并为每个IP执行PING或尝试连接TCP / UDP到某些/所有端口,直到您收到响应,这意味着有一个使用该IP的活动设备。但是,它根本没有得到任何响应,那么可能是没有设备使用该IP或设备正在过滤这些请求(防火墙丢弃您的软件包)或者只是该设备没有任何监听服务。

要了解更多相关信息,请查看一些众所周知的工具,例如nmap

另一答案
 WifiManager myWifiManager = (WifiManager)getSystemService(Context.WIFI_SERVICE);

       WifiInfo myWifiInfo = myWifiManager.getConnectionInfo();
       int myIp = myWifiInfo.getIpAddress();

textWifiManager.setText(myWifiManager.toString());
       textWifiInfo.setText(myWifiInfo.toString());

       int intMyIp3 = myIp/0x1000000;
       int intMyIp3mod = myIp%0x1000000;

       int intMyIp2 = intMyIp3mod/0x10000;
       int intMyIp2mod = intMyIp3mod%0x10000;

       int intMyIp1 = intMyIp2mod/0x100;
       int intMyIp0 = intMyIp2mod%0x100;

       textVIewIp.setText(String.valueOf(intMyIp0)
         + "." + String.valueOf(intMyIp1)
         + "." + String.valueOf(intMyIp2)
         + "." + String.valueOf(intMyIp3)
         );

还必须修改AndroidManifest.xml以授予android.permission.ACCESS_WIFI_STATE权限。

另一答案

点击设置,>无线和网络>然后wlan>点击你手机上的选项按钮(它应该在你的主页按钮旁边)然后点击高级:)

以上是关于如何在同一网络上以编程方式获取其他支持Wifi的设备的IP地址?的主要内容,如果未能解决你的问题,请参考以下文章

如何以编程方式通过 Wifi 获取连接在同一网络上的其他设备的 IP 地址?

以编程方式将设备连接到android中的同一wifi网络?

如何在同一台机器上以编程方式获取通过 AF_INET 套接字连接到我的代理的进程的 PID?

在 Mac OS X 上以编程方式获取睡眠时间(和其他节能设置)

wifi网络中其他wifi设备的MAC地址

如何在同一个wifi中获取其他设备的主机名?