На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Модераторы: Rouse_, jack128, Krid
  
    > Получение IP-адреса по доменному имени , и наоборот
      uses winsock;


      -------

      function IPAddrToName(IPAddr : String): String;
      var
       SockAddrIn: TSockAddrIn;
       HostEnt: PHostEnt;
       WSAData: TWSAData;
      begin
       WSAStartup($101, WSAData);
       SockAddrIn.sin_addr.s_addr:= inet_addr(PChar(IPAddr));
       HostEnt:= gethostbyaddr(@SockAddrIn.sin_addr.S_addr, 4, AF_INET);
       if HostEnt<>nil then
       begin
         result:=StrPas(Hostent^.h_name)
       end
       else
       begin
         result:='';
       end;
      end;

      //Пример использования:

      procedure TForm1.Button1Click(Sender: TObject);
      begin
      Label1.Caption:=IPAddrToName(Edit1.Text);
      end;


      Добавлено в
      Преобразуем доменное имя в IP адрес.

      Автор: Lutfi Baran

      Описывается функция, которая показывает, как вычислить IP адрес компьютера в интернете по его доменному имени.

      Совместимость: Delphi 3.x (или выше)

      Объявляем Winsock, для использования в функции
      ............

      function HostToIP(Name: string; var Ip: string): Boolean;
      var
       wsdata : TWSAData;
       hostName : array [0..255] of char;
       hostEnt : PHostEnt;
       addr : PChar;
      begin
       WSAStartup ($0101, wsdata);
       try
         gethostname (hostName, sizeof (hostName));
         StrPCopy(hostName, Name);
         hostEnt := gethostbyname (hostName);
         if Assigned (hostEnt) then
           if Assigned (hostEnt^.h_addr_list) then begin
             addr := hostEnt^.h_addr_list^;
             if Assigned (addr) then begin
               IP := Format ('%d.%d.%d.%d', [byte (addr [0]),
               byte (addr [1]), byte (addr [2]), byte (addr [3])]);
               Result := True;
             end
             else
               Result := False;
           end
           else
             Result := False
         else begin
           Result := False;
         end;
       finally
         WSACleanup;
       end
      end;


      ................................

      Вы можете разметстить на форме EditBox, Кнопку и Label и добавить к кнопке следующий обработчик события OnClick:

      procedure TForm1.Button1Click(Sender: TObject);
      var
      IP: string;
      begin
       if HostToIp(Edit1.Text, IP) then Label1.Caption := IP;
      end;
      0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
      0 пользователей:


      Рейтинг@Mail.ru
      [ Script execution time: 0,0196 ]   [ 16 queries used ]   [ Generated: 2.05.24, 06:25 GMT ]