其实你可以试试这样,并不需要编程!
   因为你需要一个ip上网,那就是你现在没有一个空闲ip,既然你连一个空闲的ip都没有,还可以在网络上执行上面的程序吗?我表示怀疑。
    你应该设置你的机器自动选取ip,然后看你的ip是多少?那就是你的ip了!假如没有空闲ip了,你也分不到。至于要怎么看,你可以在命令行中ipconfig就行了。

解决方案 »

  1.   

    机器启动的时候
    让它加载某个固定的IP
    每次都这样就行了。
    具体的命令我忘了
    你可以查看WIN2000 的帮助,
    有这方面的东东!
      

  2.   

    如miaoliujun(傲龙)所说,你一定要在已经分到的PC上运行你的查询IP的程序我建议使用process p = java.lang.Runtime.exec("ping 211...."),然后分析输出的结果
      

  3.   

    ping 是不会 ping 哪个端口的!
    因为, ping 基本上和 ip 层位于同一层,这时还没有端口的概念呢!
      

  4.   

    首先谢谢各位的热心回复。当然,要运行上面的程序,肯定是自己已经分到IP,象我们一个寝室里有几台电脑,很多时候有些电脑能分到ip,而有些电脑没有分到ip(我这里所谓的分其实是自己指定的IP没有和其他电脑冲突,我们这边不能自动分配ip,可能是网关没有DHCP的功能),这时就可以在已经分到ip的机器上运行程序,找出当前的空闲IP,然后其他没有分到IP的机器就可以指定这些IP了。to  zlh0814() :"PING命令发送的是ICMP报文",能不能讲讲它的工作原理,谢谢
    to  nbm0(www.西伯利亚.com.cn) :"我建议使用process p = java.lang.Runtime.exec("ping 211...."),然后分析输出的结果"你说的这种方法我实现了,确实可以。
    to hesi726(hesi) :"不过你的代码没有错啊!看来,如楼上所说,你没有被分配到 IP 地址哦!"我的机器已经分到了ip,要不然就不能发这篇贴子了^-^,可是运行程序,dgSocket.receive (datagram1);却总是收不到echo包
      

  5.   

    我在用process p = java.lang.Runtime.exec("ping 211....")这种方法实现这个程序的时候,有个小疑问,在程序中有一段分析返回数据如下:
    1)  while(  (line  =  br.readLine())!=null)  
           {  
                 if(line.equals("Request timed out."))
                         j++;
            }   
    2)while((line=br.readLine()).equals("Request timed out."))
           {
                        j++;
            }
    这两段程序有什么区别呢?
    我用上一段程序就是对的,如果替换成第二段,程序也能编译通过,可是就是没有运行结果,郁闷~
    我在第二段while循环中加了一句打印代码System.out.println("test");也根本执行不到
      

  6.   

    假如line有两行,而第一行为空或不为timeout,你想一下会出现什么情况
      

  7.   

    谢谢dmhorse,我想明白了,我想也差不多该结贴了,不过我最开始提的问题中的第二个还是没有解决“在win2000中是否有什么命令能控制端口的开与闭?”,难道非要用防火墙吗?还有就是我上面的那个程序,大家都说没有问题,但为什么就是接收不到端口为7的echo包呢?再等一天,如果还是没有人能解决,照样揭帖!^-^
      

  8.   

    tcp echo 是 win2k 网络简单服务中的一个项目,可能被防火墙禁止,甚至根本没有开启服务(不是默认安装的)。
    ping 是 icmp echo,不是 tcp echo,没有端口信息。端口是在 tcp 报头中说明的,而地址是在 ip 报头中说明。(前一阵看 RFC 文档的,呵呵)