黑马程序员技术交流社区
标题:
高手何在? 关于线程的问题
[打印本页]
作者:
黑马-王建雨
时间:
2012-6-24 12:36
标题:
高手何在? 关于线程的问题
class IpAddress implements Runnable {
ArrayList<InetAddress> arrayList = new ArrayList<InetAddress>();
@Override
public synchronized void run() {
try {
InetAddress localIp = InetAddress.getLocalHost();
String[] ipAddress = (localIp.getHostAddress()).split("\\.");
String ipAd = ipAddress[0] + "." + ipAddress[1] + "."
+ ipAddress[2] + ".";
for (int i = 2; i < 255; i++) {
String ipAdd = ipAd + i;
// System.out.println(ipAdd);
InetAddress ipL = InetAddress.getByName(ipAdd);
// System.out.println(ipL.toString());
if (ipL.isReachable(3000) == true) {
System.out.println(ipL);
arrayList.add(ipL);
}
}
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
错在哪里?
作者:
周兴中
时间:
2012-6-24 14:17
本帖最后由 周兴中 于 2012-6-24 14:20 编辑
你还没有在主函数中启动线程
new Thread(new IpAddress()).start();
if (ipL.isReachable(3000) == true) { //isReachable测试是否可以达到该地址。实现尽最大努力试图到达主机,只是防火墙和服务器配置可能阻塞请求,使其在某些特定的端口可以访问时处于不可到达状态。如果可以获得权限,则典型实现将使用 ICMP ECHO REQUEST;否则它将试图在目标主机的端口 7 (Echo) 上建立 TCP 连接。
超时值(以毫秒为单位)指示尝试应该使用的最大时间量。如果在获取应答前操作超时了,则视为主机不可到达。
所以你至少要等3*252秒才能看到结果.
System.out.println(ipL);
arrayList.add(ipL);
}
作者:
黑马_张佳超
时间:
2012-6-24 14:29
if (
ipL.isReachable(3000) == true
) {
System.out.println(ipL);
arrayList.add(ipL);
}
ipL.isReachable(3000) == true --> ipL.isReachable(3000)
isReachable()返回的就是boolean
作者:
黑马-王建雨
时间:
2012-6-24 15:09
还有没具体的回答?
作者:
黑马-王建雨
时间:
2012-6-24 15:09
还有没具体的回答?
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2