1.如何判断一个主机(ip) 是否存在? 2.如何判断这个主机(ip)的端口是否开放??

解决方案 »

  1.   

    使用IdEcho向IP固定端口发包,有回应就成功,否则不存在
      

  2.   

    呵呵
    最简单的方法就是用Socket连接对方IP与端口,如果成功则表是存在且打开,如果......
      

  3.   

    这儿有答案http://search.csdn.net/expert/topic/53/5301/2003/12/23/2592843.xml
      

  4.   

    是阿, 如insert2003(高级打字员)说的一样用Socket直接连就知道了阿
      

  5.   

    1.如何判断一个主机(ip) 是否存在?
    2.如何判断这个主机(ip)的端口是否开放?我也很想知道,我需要连接某个IP的3306端口但是之前要知道这个IP是否可达,端口是否开放,但我不会网络编程,请同志们给个实例,谢谢!
      

  6.   

    在http://delphi.ktop.com.tw/找到答案了:
    function PingAlive(const AHost: string; const ATimeout: Cardinal = 1000): boolean;
    var
      IdIcmpClient: TIdIcmpClient;
    begin
      try
        IdIcmpClient := TIdIcmpClient.Create(nil);
        IdIcmpClient.ReceiveTimeout := ATimeout; //設定回應的等候時間
        IdIcmpClient .Host := AHost;
        Result := true;
        try
          IdIcmpClient.Ping;
        except
          Result := false;
        end;
      finally
        FreeAndNil(IdIcmpClient);
      end;
    end;function CheckServerAlive(const AHost: string; const APort: integer): boolean;
    var
      IdTCPClient: TIdTCPClient;
    begin
      Result := false;  if not PingAlive(AHost) then
        Exit;  try
        IdTCPClient := TIdTCPClient.Create(nil);
        IdTCPClient.Host := AHost;
        IdTCPClient.Port := APort;    try
          IdTCPClient.Connect;
          Result := true;
        except
          Result := false;
        end;
        IdTCPClient.Disconnect;
      finally
        FreeAndNil(IdTCPClient);
      end;
    end;procedure TFormLogin.Button1Click(Sender: TObject);
    begin
      if CheckServerAlive(Edit1.Text,3306) then  ShowMessage('OK');
    end;
      

  7.   

    补充一下,Delphi没有Indy组件,要单独装!
    去delphifans.com下载。