我把我自己的机器设为主机!
只要获取正在运行的机器的就可以了!
最好思路清晰!如果有详细代码并解释的会给予再加分!

解决方案 »

  1.   

    呵呵,根据自己的ip地址,扫描从xxx.xxx.xxx.0到xxx.xxx.xxx.255
      

  2.   

    用软件扫描吧,那个叫sniff什么的软件
      

  3.   

    //获取本机IP地址
    function getIPs: TStrings;
    type
        TaPInAddr = Array[0..10] of PInAddr;
        PaPInAddr = ^TaPInAddr;
    var
        phe: PHostEnt;
        pptr: PaPInAddr;
        Buffer: Array[0..63] of Char;
        I: Integer;
        GInitData: TWSAData;
    begin
        WSAStartup($101,GInitData);
        Result:=TStringList.Create;
        Result.Clear;
        GetHostName(Buffer,SizeOf(Buffer));
        phe := GetHostByName(buffer);
        if phe = nil then
        begin
          Exit;
        end;
        pPtr := PaPInAddr(phe^.h_addr_list);
        I := 0;
        while pPtr^[I] <> nil do
        begin
           Result.Add(inet_ntoa(pptr^[I]^));
           Inc(I);
        end;
        WSACleanup;
    end;
      

  4.   

    使用API:
    WNetOpenEnum和WNetEnumResource
      

  5.   

    unit local;interfaceuses
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
      StdCtrls,Winsock;type
      TForm1 = class(TForm)
        Button1: TButton;
        Edit1: TEdit;
        Memo1: TMemo;
        Label1: TLabel;
        procedure Button1Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;function FindComputer(ComputerName: string):Boolean;implementation{$R *.DFM}function FindComputer(ComputerName: string):Boolean;
    var
      WSAData: TWSAData;
      HostEnt: PHostEnt;
    begin
      Result :=True;
      WSAStartup(2, WSAData);
      HostEnt := gethostbyname(PChar(ComputerName));
      if HostEnt = nil then Result := False;
      WSACleanup;
    end;procedure TForm1.Button1Click(Sender: TObject);
    begin
      if FindComputer(edit1.text)=True then
        Memo1.lines.Add(edit1.text+'在局域网上!')
      else
        Memo1.lines.Add(edit1.text+'不在局域网上!');
    end;end.
      

  6.   

    只能得到局域网上已经开机的机器信息,用可以用Sendarp判断某个IP机器是否开机,然后可以通过IP地址直接得到机器名。。