我想做一个局域网内分网段扫描系统,要求扫描得到所有在线计算机的IP地址和MAC地址,请各位给个思路!谢谢!

解决方案 »

  1.   

    源码:http://www.delphibox.com/article.asp?articleid=327介绍:
        局域网搜索软件。方便快捷地搜索、浏览局域网资源。多线程搜索局域网上所有的工作组、主机、打印机、共享文件。自动搜索所有共享的mp3、电影或自定义搜索的文件;允许用户自己设置登录的用户名密码。包括默认值和对不同的主机设置不同的值;内置nbtstat,能快速查找某一IP网段内的所有主机,并根据IP地址得到对方主机的主机名、工作组名、用户名、MAC地址,速度极快。并方便地访问其资源。能对某一地址范围的主机进行ping,端口扫描操作,找出所有的WEB服务器,FTP服务器等。能向某一主机发送消息。提供断点续传的功能(局域网机器间拷贝文件时)。采用类似资源管理器的界面,操作十分方便。
      

  2.   

    这个本来我知道,可是我昨天被delphi版主-aiirii玩弄了,我现在想告别DELPHI论坛; 所以我也不想说什么了!
    http://community.csdn.net/Expert/topic/3512/3512267.xml?temp=.2720606
      

  3.   

    各位高手,请问NetWkstaTransportEnum是做什么用的?
      

  4.   

    怎样得到远程机器的MAC地址?
      

  5.   

    function SendARP( const DestIP : DWord;
                      const SrcIP : DWord;
                      const pMacAddr : Pointer;
                      const PhyAddrLen : PULONG) : DWord; stdcall; external 'IPHLPAPI.DLL' 
    name 'SendARP';
    ...
    ...
    ...
    function getmac(ip:string):String;
    var
      dwResult : DWord;
      ulIPAddr : DWord;
      ulMACAddr : Array [0..5] of Byte;
      ulAddrLen : ULONG;
    begin
      ulIPAddr := inet_addr(PChar(ip));
      ulAddrLen := 6;
      dwResult := SendARP(ulIPAddr,0,@ulMACAddr,ulAddrLen);
      if dwResult=0 then
        result:=(IntToHex(ulMACAddr[0],2)+':'+
                    IntToHex(ulMACAddr[1],2)+':'+
                    IntToHex(ulMACAddr[2],2)+':'+
                    IntToHex(ulMACAddr[3],2)+':'+
                    IntToHex(ulMACAddr[4],2)+':'+
                    IntToHex(ulMACAddr[5],2));
    end;
      

  6.   

    你用我给你的UDP那个方法就能实现了。