JWorld@TW the best professional Java site in Taiwan
      註冊 | 登入 | 全文檢索 | 排行榜  

» JWorld@TW » Java 新手區  

按列印兼容模式列印這個話題 列印話題    把這個話題寄給朋友 寄給朋友    訂閱主題
reply to postflat modego to previous topicgo to next topic
本主題所含的標籤
無標籤
作者 Re:如何讓偵測ip位址上是否有主機存在的速度加快。~請指引方向。 [Re:ojwes]
ryanpai





發文: 47
積分: 0
於 2007-05-08 10:53 user profilesend a private message to usersend email to ryanpaireply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
種田嗎??有休閒農場嗎??

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
/*
 * NetWork2.java
 *
 * Created on 2007年5月8日, 10:00
 */
 
//package snmp;
import java.io.IOException;
import java.io.InterruptedIOException;
import java.net.InetAddress;
import java.net.UnknownHostException;
import java.io.*;
import java.util.*;
 
/**
 *
 * @author  RYANPAI
 *
 */
public class NetWork2 {
 
    // 儲存檢核 IP 1~254 之結果
    private static String outcome[][]=new String[254][2];
 
    // 檢核 Thread Count是否已達254
    private static int threadCount = 0;
 
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // TODO code application logic here
        try{
            InetAddress ay=  InetAddress.getLocalHost();
            String a1=ay.getHostAddress().toString();
            String y[] = a1.split("\\.");
            String a4=y[0]+"."+y[1]+"."+y[2]+".";
            System.out.println(ay);
            System.out.println(a1);
            System.out.println(y[0]+"."+y[1]+"."+y[2]+".");
            System.out.println(a4);
 
            // initial and start Thread (Ping Test) JDK 1.4.x or 1.5.x
            for(int i=1;i<=254;i++){
                String a5=a4+i;
                outcome[i-1][0] = a5;
                isReachablePingTestThread irpt = new isReachablePingTestThread(i,a5);
                irpt.start();
            } // end for(int i=1;i<=254;i++){
 
            // Check Stop
            while(threadCount<254) {
                //waiting 1 second
                try{
                    Thread.currentThread().sleep(1000);
                    System.out.println("threadCountCheck="+threadCount);
                }
                catch(InterruptedException ex) {
                }
            }
            
            
                
            // List Check Outcome
            for(int j=1;j<=254;j++){
                System.out.println(outcome[j-1][0]+"..."+outcome[j-1][1]);
            } // end for(int j=1;j<=254;j++){
                        
        } // end try
        
        catch(Exception e){
            System.out.println("Exception e ="+e);
        } // end catch(Exception e)
        
    }
    
    
    
    public static byte[] transform(String str) {
        String[] x=str.split("\\.",4);
        byte[] ip = new byte[x.length];
        for(int i=0; i<x.length; i++) {
            ip[i] = (byte) Integer.parseInt(x[i]);
        }
        return ip;
    }
      
 
    // ********************************************************
    // * 1. 執行 Ping 並回傳結果
    // * 2. JDK/JRE 1.4.x ~ 1.5.x可用
    // ********************************************************
    public static class isReachablePingTestThread extends Thread{
        
        int count;
        String testIP;
        isReachablePingTestThread(int count,String testIP) {
            this.count = count;
            this.testIP = testIP;
        }
        public void run() {
            try{
                
                //System.out.println("Do Check IP "+testIP);                
                Process p = Runtime.getRuntime().exec("ping -n 1 " + testIP);
                int status = p.waitFor();
                if(status==0) {
                    outcome[count-1][1] = "alive";
                }
                else {
                    outcome[count-1][1] = "dead";
                }
                
                threadCount ++;
            }
            catch(Exception e){
                System.out.println("isReachablePingTestThread error... "+e);
            }
        }
    }
    
}


使用Thread+isReachable(1000)似乎無法傳回正確狀態。
上述用Thread+Runtime.getRuntime().exec("ping -n 1 " + testIP)似乎可行。
試看看吧。山不轉路轉,應該還有解法。


ryanpai edited on 2007-05-09 08:17
reply to postreply to post
Ryan Pai
話題樹型展開
人氣 標題 作者 字數 發文時間
4258 如何讓偵測ip位址上是否有主機存在的速度加快。~請指引方向。 hearenly 1654 2007-01-16 11:00
3302 Re:如何讓偵測ip位址上是否有主機存在的速度加快。~請指引方向。 ojwes 351 2007-05-07 04:42
3438 Re:如何讓偵測ip位址上是否有主機存在的速度加快。~請指引方向。 ryanpai 3769 2007-05-08 10:53
3220 Re:如何讓偵測ip位址上是否有主機存在的速度加快。~請指引方向。 hearenly 109 2007-05-07 11:20
2978 Re:如何讓偵測ip位址上是否有主機存在的速度加快。~請指引方向。 winer406 383 2007-06-27 01:32
3312 Re:如何讓偵測ip位址上是否有主機存在的速度加快。~請指引方向。 ojwes 523 2007-05-10 03:48
» JWorld@TW »  Java 新手區

reply to postflat modego to previous topicgo to next topic
  已讀文章
  新的文章
  被刪除的文章
Jump to the top of page

JWorld@TW 本站商標資訊

Powered by Powerful JuteForum® Version Jute 1.5.8