我提示你哦..
ping网关可以得到在线的ip

解决方案 »

  1.   

    对了,用Ping 命令是不行的,因为当你的IP 和人家的有冲突的时候,是Ping 不通任何IP 的。
      

  2.   

    可以让所有得电脑都不设IP,让WINDOWS自动指定IP,不过如果这样,只要有一台电脑指定了IP,就会引起整个网络冲突。
    不过要检测哪些IP没用,也不是没有办法,在WIN2000下,利用原始套接字,具体编程你可以查阅相关资料
      

  3.   

    即使编了这样的程序,首先也要在一台没冲突的机器上运行才行,如果已经有了没有IP冲突的机器,直接批处理PING就可以了
      

  4.   

    記得win2000有dhcp動態分配ip的功能
      

  5.   

    我是在局域网上的,应该有不通过tcp/ip协议就能获取局域网上机器的ip的办法吧
      

  6.   

    用ipconfig /all检查所有
    另外(回楼上),自动获取ip可以指定网关、DNS服务器等
      

  7.   

    在2000下,如果选定了自动获取IP,可以指定DNS服务器,但不能指定网关。不知道有没有人知道windows的自动获取IP功能是怎么实现的,在是有这方面的资料,就可以自己编程实现自动查找没人使用的IP了。
      

  8.   

    to ludou(绿豆)
    你应该好好学习Windows2000的DHCP,指定网关是它的基本功能,你居然说不能
      

  9.   

    我是在“本地连接”设置IP的,在那里要是不自己指定IP,指定网关的选项也就没法用了,那我应该在那指定呢?
      

  10.   

    实际上是调用的WINSOCK2.0的API函数,我可以把源代码发给你。
      

  11.   

    谢谢,如果你不是很忙的话,能不能把它发到[email protected].
      

  12.   

    不过,我这个房间里就有两台电脑开着呢,都是一个网上的,我用区域探测,给里只找到自己。
    能不能说一下你用的是哪几个API?
      

  13.   

    很感谢你的热心帮助,可惜我没学过delphi,自己能不能告诉我你用的是哪几个API,我自己查一下联机帮助。 
      

  14.   

    很简单,你知道IP后,再设这台机器的IP。就冲突了。。(不能说, 这可是黑客行为)
      

  15.   

    快被你烦死了:(
    下面几个API函数,我都是从msdn6里查出来的。
    WSAStartup;
    gethostbyname,
    gethostbyaddr,
    inet_addr,
    WSAGetLastError
    WSACleanup;Function MyGetHostByIP(MIP:string; var Name:string):boolean;
    var
      PHt:PHostEnt;
      WSData: TWSAData;
      i:Word;
      j:integer;
      k:u_long;
    begin
      result:=false;
      i:=MAKEWORD(1,1);
      if WSAStartup(i,WSData)<>0 then exit;
      k:=inet_addr(PChar(MIP));
      PHt:=gethostbyaddr(@k,4,PF_INET);
      if PHt=nil then begin
         j:=WSAGetLastError;
         Name:='Error:'+inttostr(j-WSABASEERR);
      end else begin
         Name:=PHt.h_name;
         result:=true;
      end;
      WSACleanup;
    end;
    Function MyGetHostByName(var IP:string; Name:string):boolean;
    var
      PHt:PHostEnt;
      WSData: TWSAData;
      i:Word;
      a,b,c,d:byte;
      j:integer;
    begin
      result:=false;
      i:=MAKEWORD(1,1);
      if WSAStartup(i,WSData)<>0 then exit;
      PHt:=gethostbyname(PChar(Name));
      if PHt=nil then
      begin
         j:=WSAGetLastError;
         //ip:='Error:'+inttostr(j-WSABASEERR);
         ip:='********';
      end else
      begin
         a:=integer(pht.h_addr_list^[0]);
         b:=integer(pht.h_addr_list^[1]);
         c:=integer(pht.h_addr_list^[2]);
         d:=integer(pht.h_addr_list^[3]);
         ip:=inttostr(a)+'.'+inttostr(b)+'.'+inttostr(c)+'.'+inttostr(d);
         result:=true;
      end;
      WSACleanup;
    end;
      

  16.   

    我放弃了在IP冲突的情况下查找空闲IP的想法。谢谢大家的关注。