try ping.
function IcmpCreateFile:Integer;stdcall;external 'ICMP.DLL';
function IcmpCloseHandle(ICMPHandle:Integer):boolean;stdcall;external 'ICMP.DLL';
function IcmpSendEcho( IcmpHandle:integer; DestinationAddress:Integer;RequestData:PChar; RequestSize: WORD;RequestOptions:Pointer;ReplyBuffer:PChar;ReplySize:DWORD;Timeout:DWORD):DWORD;stdcall external 'ICMP.DLL';function Ping(var sDestAddr:String):boolean;{ you can use the link to be a param of sDestAddr}
var
echoHandle:Integer;
echoReplyBuffer:array [0..255] of Char;
destAddr:Integer;
echoRequestData:String;
begin
Result:=false;
echoRequestData:='AAAAAAAAAA';
echoHandle:=IcmpCreateFile;
          destAddr:=inet_addr(PChar(SDestAddr));
          if IcmpSendEcho(echoHandle,destAddr,PChar(echoRequestData),Length(echoRequestData),nil,echoReplyBuffer,255,200)=0 then
            Result:=true else Result:=false;
IcmpCloseHandle(echoHandle);
end;或者你可以创建一个Socket检验对应的Address是否连通。

解决方案 »

  1.   

    胡说,你ping 163或263看一下。
      

  2.   

    谢谢InsideDelphi,我试试
    up!
      

  3.   

    该问题,我刚提过,用Ping,有些网站封了ICMP,PING不了,没有任何回应,不信,可ping一下万网(www.net.cn)或新网(www.chinadns.net)我自己的网站(www.adsongroup.com)也PING不了,不过大多都可以PING。
      

  4.   

    faint~~
    难道注定第二次问还是要成死贴吗??
      

  5.   

    奇怪,两个阿笨猫?  你可以用NMhttp中的head方法,取得链接的head,如果成功,则该链接地址有效,呵呵,加分!
      

  6.   

    能说具体点吗?
    偶没用过NMHTTP....PS:现在贴子限制一个人只能回复三次,又没有提前功能,哎,,,
      

  7.   

    2 lbsoft:
    你讲的包括ping不通的网站吗?具体怎么做呢?
      

  8.   

    我的代码如下:unit Unit15;interfaceuses
      Windows,Classes,Sysutils;type
      TCheckUrl = class(TThread)
      private
        { Private declarations }
      protected
        procedure Execute; override;
      public
        constructor Create;
      end;implementationuses
      Unit2,Unit3;constructor TCheckUrl.Create;
    begin
      inherited Create(true);
    end;procedure TCheckUrl.Execute;
    var
      CurTime:LongWord;
      DelayTime:LongWord;
      Tag_Value:integer;
      Address_Chk:string;
    begin
      with CheckLinksForm.DBISAMTable do
        begin
          TableName:='UrlAddress.dat';
          Exclusive:=False;
          ReadOnly:=False;
          Open;
          First;
          while not EOF do
            begin
              Url_True_False:=False;
              Address_Chk:=MainForm.DenCrypt(Trim(FieldByName('Url').AsString),'');
              if Address_Chk<>'' then
                begin
                try
                  CheckLinksForm.NMhttp1.head(Trim(Address_Chk));
                  //设置时间延迟为0.5秒
                  DelayTime:=5000;
                  CurTime:=GetTickCount;
                  while (GetTickCount<(CurTime+DelayTime)) do
                    if Url_True_False=True then break;
                        CheckLinksForm.NMhttp1.Cancel;
                  if Url_True_False=True then
                      begin
                        Address_Chk:=Address_Chk+' ......Ok!';
                        CheckLinksForm.Memo1.Lines.Add(Address_Chk);
                        Tag_Value:=2;
                      end
                  else
                      begin
                        Address_Chk:=Address_Chk+' ......Failure!';
                        CheckLinksForm.Memo1.Lines.Add(Address_Chk);
                        Tag_Value:=1;
                      end;
                except
                  Url_True_False:=False;
                  Address_Chk:=Address_Chk+' ......Failure!';
                  CheckLinksForm.Memo1.Lines.Add(Address_Chk);
                  Tag_Value:=1;
                end;
                //fieldbyname('Tag').value:=Tag_Value;
                //fieldbyname('M_Date').value:=DatetimeToStr(Now);
                //Post;
                end;
              next;  
              if Terminated then Exit;
            end;
        end;
        CheckLinksForm.button2.caption:='Finished';
    end;end.
      

  9.   

    ping成功并不代表某个页面存在啊?用ie控件,如果成功显示页面则代表超链接能通,
    虽然这个办法也不是好办法,
    但不知道还有没有更好的办法?
      

  10.   

    对了,有个nmhttp控件,用那个应该可以.
      

  11.   

    我这样做
    用head方法取,然后判断replynumber的返回值
    一般是可以了,但碰到自动跳转的页面还不知怎么处理
    比如网易的个人主页,如某页不存在,则自动跳到www.163.com
    这种情况怎么处理
      

  12.   

    特殊情况就算了吧,我开始在线程中用Nmhttp的Head属性来验证,但老是出错,没办法,只好在线程中用Ping,虽然不能够验证某些已封Icmp的网站,但是大多数的网站都能够Ping,还有一个缺点,就是Ping不能够象NMhttp那样来验证一个网页是否存在,但速度快很多(验证网站)。我只知道这些了,如果你有好的方法,希望能通知我。 [email protected]