我的Android设备通过wifi连接到同一个网络,我的电脑连接到路由器的电缆。我的android也通过wifi连接到路由器。
在我的路由器设置上,我在ip 10.0.0.3上看到我的android,在ip 10.0.0.2上看到我的电脑
在我的程序中,我在阵列中添加了另一个ip,仅用于测试。 我想要做的是在我的Android设备上,当我点击一个按钮循环数组并找到我的电脑连接到路由器的IP。
这就是我在onClick按钮事件中所做的:
@Override
public void onClick(View arg0)
{
text = (TextView) findViewById(R.id.textView2);
try
{
int timeout = 1000;
for (int i = 0; i < ipaddresses.length; i++)
{
if (InetAddress.getByName(ipaddresses[i]).isReachable(timeout))
{
System.out.println(ipaddresses[i] + " is reachable");
text.setText("Connection success");
break;
}
}
} catch (Exception e)
{
text.setText("Connection Failed");
}
}
在ipaddresses数组中,index [0]中的第一个字符串是“10.0.0.2” 因此,当我运行我的程序时,单击按钮,它应该会发现我的电脑已连接到此IP。
但相反,它会跳到捕获并显示连接失败。
如果我知道我的电脑连接到10.0.0.2,为什么连接失败?
我尝试用线程这样做:
try
{
Thread t = new Thread(new Runnable()
{
@Override
public void run()
{
int timeout = 1000;
for (int i = 0; i < ipaddresses.length; i++)
{
try
{
if (InetAddress.getByName(ipaddresses[i]).isReachable(timeout))
{
System.out.println(ipaddresses[i] + " is reachable");
text.setText("Connection success");
break;
}
} catch (IOException e)
{
text.setText("Connection Failed");
e.printStackTrace();
}
}
}
});
t.start();
} catch (Exception e)
{
text.setText("Connection Failed");
}
但是当我是0 i = 0然后它应该到达休息时间;因为在ipaddresses中数组索引0是10.0.0.2我的pc ip地址。但相反,它正在再次进行,现在i = 1出错了。