![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
В процессе работы программа шлёт 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
|
|||
|
|||
|
Нашёл вариант на сокетах, но хотелось бы версию для 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
|
|||
|
|||
|
А впрочем хрен с ним - есть рабочий код на сокетах - нужно его и юзать.
Код:
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 завтра никто не предложит, то топик можно закрыть ![]() |