黑马程序员技术交流社区

标题: 高手何在? 关于线程的问题 [打印本页]

作者: 黑马-王建雨    时间: 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