在我的 Android 手机中,我点击手机并看到设置-> 无线控制-> Wifi 设置,然后点击我连接的网络。它弹出一个对话框,包含网络状态、级别、速度、信号强度、IP 地址和安全类型。所以我得到了一个网络的IP地址。
如何通过提供(从我的手机获得的已知 IP 地址)作为输入来获取其他启用 wifi 的设备的 IP 地址?
实际上要清楚,如何将特定的已知 IP 地址作为输入,并且必须能够在 Android 2.3 中以编程方式获取连接在同一网络上的 Wifi 启用设备的其他未知 IP 地址?
在我的 Android 手机中,我点击手机并看到设置-> 无线控制-> Wifi 设置,然后点击我连接的网络。它弹出一个对话框,包含网络状态、级别、速度、信号强度、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>单击手机上的选项按钮(它应该在您的主页按钮旁边)然后单击高级:)