Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 07.11.2010, 22:13
MrDiG MrDiG вне форума
Начинающий
 
Регистрация: 05.10.2010
Сообщения: 112
Репутация: 1227
По умолчанию idHTTP и ip сервера

В процессе работы программа шлёт GET и POST запросы на мой сайт, использую idHTTP.
допустим IdHTTP.Get('http://domen.ru/script.php?info=123');

IP адрес у domen.ru постоянный, и я его знаю.
Как убедиться что данные отправляются именно на мой сайт? Т.е. как убедиться, что domen.ru расположен по адресу допустим 155.155.155.155. Т.е. как получить IP адрес сайта?

А то ведь в винде можно добавить в файл hosts строчку
127.0.0.1 domen.ru
и данные уйдут на локалхост, а программа не получит ответа.
А если на локалхосте поднять вебсервер на том же Денвере с адресом domen.ru то и подменять ответы можно.

Последний раз редактировалось MrDiG, 07.11.2010 в 22:37.
Ответить с цитированием
  #2  
Старый 07.11.2010, 22:34
MrDiG MrDiG вне форума
Начинающий
 
Регистрация: 05.10.2010
Сообщения: 112
Репутация: 1227
По умолчанию

Нашёл вариант на сокетах, но хотелось бы версию для idHTTP.

Да и не всё я в нижеприведённом коде понимаю.

Код:
function GetIPFromHost(const HostName: string): string;
type
  TaPInAddr = array[0..10] of PInAddr;
  PaPInAddr = ^TaPInAddr;
var 
  phe: PHostEnt;
  pptr: PaPInAddr;
  i: Integer;
  GInitData: TWSAData;
begin
  WSAStartup($101, GInitData);
  Result := '';
  phe := GetHostByName(PChar(HostName));
  if phe = nil then Exit;
  pPtr := PaPInAddr(phe^.h_addr_list);
  i := 0;
  while pPtr^[i] <> nil do
  begin
    Result := inet_ntoa(pptr^[i]^);
    Inc(i);
  end;
  WSACleanup; 
end;
Ответить с цитированием
  #3  
Старый 07.11.2010, 22:49
MrDiG MrDiG вне форума
Начинающий
 
Регистрация: 05.10.2010
Сообщения: 112
Репутация: 1227
По умолчанию

А впрочем хрен с ним - есть рабочий код на сокетах - нужно его и юзать.
Код:
uses Winsock;

procedure TForm1.Button4Click(Sender: TObject);
var
 wsdata: TWSAData;
 hostName: array [0..255] of ansichar;
 hostEnt: PHostEnt;
 addr: PAnsiChar;
begin
 WSAStartup ($0101, wsdata);
  try
   GetHostName(hostName, sizeof (hostName));
   StrPCopy(hostName,Edit4.Text);
   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
        Label9.Caption:=Format('%d.%d.%d.%d',[byte(addr[0]),
        byte(addr[1]),byte(addr[2]),byte(addr[3])]);
       end;
     end;
  finally
   WSACleanup;
  end;
end;

Если решения с idHTTP завтра никто не предложит, то топик можно закрыть
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 22:59.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025