본문 바로가기
Delphi Tip/인터넷

델파이 완벽한 인터넷 체크

by MonoSoft 2022. 2. 25.
728x90
반응형

uses Winapi.WinInet, IdIcmpClient,IdGlobal;

 

function Ping: Boolean;
var
  IcmpClient: TIdIcmpClient;
begin
  Button1.Enabled := False;

  Result:= False;

  if ftCheckInternetPing then
  begin

  IcmpClient:= TIdIcmpClient.Create(Nil);
  IcmpClient.ReceiveTimeout:= 2000; // 1~3초 사이면 충분 합니다.
  IcmpClient.Host:= '8.8.8.8'; // 구글 아이피로 설정 해뒀고 다른데 쓰셔도 됩니다.
  IcmpClient.PacketSize:= 24;

  try
    IcmpClient.Ping;

    if IcmpClient.ReplyStatus.ReplyStatusType = rsEcho then
      Result:= true;

  finally
    IcmpClient.Free;
  end;
  end;

  Button1.Enabled := True;
end;

 

-----------------------------------------------------------------------------

 

function IsNetworkAlive(var lpdwFlags: DWORD): HRESULT; stdcall; external 'SENSAPI.DLL';

const
  NETWORK_ALIVE_LAN = $1;
  NETWORK_ALIVE_WAN = $2;
  NETWORK_ALIVE_AOL = $4;

 

function ftCheckInternetPing : boolean;
  var
    dRet : DWORD;
  begin
    if IsNetworkAlive(dRet) = 0 then
      Result := False // ShowMessage('연결된 네트워크가 없습니다.')
    else
    begin
      if (dRet and NETWORK_ALIVE_LAN) <> 0 then
        Result := True;//ShowMessage('LAN 연결');

      if (dRet and NETWORK_ALIVE_WAN) <> 0 then
        Result := True; //ShowMessage('WAN 연결');

      if (dRet and NETWORK_ALIVE_AOL) <> 0 then
      Result := True; //ShowMessage('AOL 네트워크 연결');
    end;
  end;

728x90
반응형

댓글