比如使用 广播 ,什么的?
    具体我不太清楚,代码 应该怎么写呢?

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【thankyou2008】截止到2008-08-03 19:40:39的历史汇总数据(不包括此帖):
    发帖的总数量:25                       发帖的总分数:1690                     每贴平均分数:67                       
    回帖的总数量:42                       得分贴总数量:7                        回帖的得分率:16%                      
    结贴的总数量:25                       结贴的总分数:1690                     
    无满意结贴数:2                        无满意结贴分:140                      
    未结的帖子数:0                        未结的总分数:0                        
    结贴的百分比:100.00%               结分的百分比:100.00%                  
    无满意结贴率:8.00  %               无满意结分率:8.28  %                  
    敬礼!

    取消马甲机器人,请点这里:http://www.java2000.net/mycsdn/robotStop.jsp?usern=thankyou2008
      

  2.   

    windows下有wmi可以弄到局域网所有机器ip其他方法,暂时还不知道.我个人是用snmp协议去搜索开启snmp的设备
      

  3.   

    排除掉所有可能,从网关处获取是最准确的(哪怕客户端关闭所有端口,不让ping之类的)假设网关是路由器或交换机,支持snmp,那么可以得到所有连接到这个设备的计算机假设无网关,网络设备只有集线器,你只能sniffer网络包了,假设各客户端总会发出类似"who is server"之类的询问
      

  4.   

    你太走运了,我刚刚做了一个项目需要遍历局域网IP的,大体分为两步::
    1.得到局域网网段,可由自己机器的IP来确定
    2.根据IP类型,一次遍历局域网内IP地址
    我给你一个JAVA类,编译之后直接运行便可以得到局域网内所有IP,具体怎样使用你自己编写相应代码调用便可
    代码如下::
    package bean;import java.io.*; 
    import java.util.*; public class Ip{ 
    static public HashMap ping; //ping 后的结果集 
    public HashMap getPing(){ //用来得到ping后的结果集
    return ping;
    }//当前线程的数量, 防止过多线程摧毁电脑 
    static int threadCount = 0; public Ip() { 
    ping = new HashMap(); 

      
    public  void Ping(String ip) throws Exception{ 
    //最多30个线程 
    while(threadCount>30) 
    Thread.sleep(50); 
        threadCount +=1; 
        PingIp p = new PingIp(ip); 
        p.start(); 
    }   public void PingAll() throws Exception{ 
    //首先得到本机的IP,得到网段
    InetAddress host = InetAddress.getLocalHost();
    String hostAddress = host.getHostAddress();
    int k=0;
    k=hostAddress.lastIndexOf(".");
    String ss = hostAddress.substring(0,k+1);
    for(int i=1;i<=255;i++){  //对所有局域网Ip
    String iip=ss+i;
    Ping(iip);
    } //等着所有Ping结束 
    while(threadCount>0) 
    Thread.sleep(50); 
    } public static void main(String[] args) throws Exception{ 
    Ip ip= new Ip(); 
        ip.PingAll(); 
        java.util.Set entries = ping.entrySet(); 
        Iterator iter=entries.iterator(); 
          
        String k; 
        while(iter.hasNext()){ 
    Map.Entry entry=(Map.Entry)iter.next(); 
    String key=(String)entry.getKey(); 
    String value=(String)entry.getValue();  if(value.equals("true")) 
    System.out.println(key+"-->"+value); 
        } 

    class PingIp  extends Thread{ 
    public String ip;           // IP 
    public PingIp(String ip){ 
    this.ip=ip; 
    }  public void run(){ 
    try{ 
    Process p= Runtime.getRuntime().exec ("ping "+ip+ " -w 300 -n 1"); 
    InputStreamReader ir = new InputStreamReader(p.getInputStream()); 
    LineNumberReader input = new LineNumberReader (ir); 
    //读取结果行 
    for (int i=1 ; i<7; i++) 
        input.readLine(); 
    String line= input.readLine(); 

    if (line.length()<17 || line.substring(8,17).equals("timed out")) 
    ping.put(ip,"false"); 
    else 
    ping.put(ip,"true"); 
    //线程结束 
    threadCount -= 1; 
    }catch (IOException e){} 
    }    

    }
      

  5.   

    5楼的这样会不会很慢?有点机器还不让ping,有点机器装了防火墙,而且
    3楼的能不能再详细说说。。想学习下
      

  6.   

    我到单位后,上传一个snmp client的范例程序吧.
    里面用到了其他厂商的控件的试用版
      

  7.   

    五楼的那个可以用。可是效率真的不是很好啊。
    而且禁Ping了的机器也用不上。