Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.07.29;
Скачать: CL | DM;

Вниз

Заполнение структуры PHostEnt   Найти похожие ветки 

 
n_shadow   (2006-12-20 17:23) [0]

Нужно запонить каждый параметр структуры PHostEnt отдельно и в ручную. У меня ничего не получается, всё уже перепробовал, может кто поможет!? Заранее благодарен!


 
Rouse_ ©   (2006-12-20 23:17) [1]


>  отдельно и в ручную. У меня ничего не получается

Что значит не получается?
 Z: PHostEnt ;
begin
 New(Z);
 try
   Z^.h_name := "qwe";
   ShowMessage(Z^.h_name);
 finally
   Dispose(Z);
 end;
Вышеописанный способ не заполняет структуру?


 
n_shadow   (2006-12-21 11:54) [2]

Итак, есть функция:
function gethostbyname(name: PChar): PHostEnt; stdcall; Я подменяю данную функцию на свою новую и мне нужно заполнить структуру PHostEnt. Т.е. вписать ip адрес, имя хоста и т.д. полностью структуру:
h_name: PChar;
h_aliases: ^PChar;
h_addrtype: Smallint;
h_length: Smallint;
case Byte of
 0: (h_addr_list: ^PChar);
 1: (h_addr: ^PChar)


 
Rouse_ ©   (2006-12-21 11:57) [3]

показывай код...


 
Плохиш ©   (2006-12-21 11:57) [4]

Банально, конечно, но "Ошибка в 17й строке".


 
n_shadow   (2006-12-21 12:25) [5]

function Newgethostbyname(name: PChar): PHostEnt; stdcall;
var Host: PHostEnt;
    t: TInAddr;
begin
  t.S_addr:=inet_addr(PChar("192.168.1.110"));
  Host:=gethostbyaddr(@t, SizeOf(in_addr), AF_INET);
  result:=Host;
end;

Вот пример, только в PHostEnt будет всё о хосте с ип адресом 192.168.1.110, если он ещё будет в сети, а мне надо самому заполнить структуру PHostEnt, чтобы туда записать любой ип адрес и имя.


 
Anatoly Podgoretsky ©   (2006-12-21 12:38) [6]

> n_shadow  (21.12.2006 12:25:05)  [5]

Не требуется, можешь даже шнурок из компьютера вытащить.


 
Rouse_ ©   (2006-12-21 14:42) [7]

function Newgethostbyname(name: PChar): PHostEnt; stdcall;
var Host: PHostEnt;
   t: TInAddr;
begin
 Result := Orig_gethostbyname(name);
 Result^.h_name := пиши что вздумается...
end;


 
n_Shadow   (2006-12-21 17:16) [8]

Пишу же, что нужно полностью заполнить структуру PHostEnt. Да и не могу я вызвать Orig_gethostbyname(name) т.к. у меня перехват это функции происходит, ссылка будет всё равно на Newgethostbyname. Result^.h_name это не проблема, проблема в h_addr_list. Нужно не имя хоста, а ип адрес любой вписать.


 
n_Shadow   (2006-12-21 17:16) [9]

Пишу же, что нужно полностью заполнить структуру PHostEnt. Да и не могу я вызвать Orig_gethostbyname(name) т.к. у меня перехват это функции происходит, ссылка будет всё равно на Newgethostbyname. Result^.h_name это не проблема, проблема в h_addr_list. Нужно не имя хоста, а ип адрес любой вписать.


 
novill ©   (2006-12-21 17:27) [10]

> [9] n_Shadow   (21.12.06 17:16)

а как бы ты заполнял такую структуру?

hostent
{  
char FAR* h_name;  
char FAR  FAR** h_aliases;  
short h_addrtype;  
short h_length;  
char FAR  FAR** h_addr_list;
} hostent;


 
novill ©   (2006-12-21 17:36) [11]

можно например так

Host.h_addr_list^:=Pchar("127.0.0.1");


 
n_Shadow   (2006-12-21 18:45) [12]


> можно например так  Host.h_addr_list^:=Pchar("127.0.0.1");


Не, так не получится.
function Newgethostbyname(name: PChar): PHostEnt; stdcall;
var Host: PHostEnt;
   t: TInAddr;
begin
 t.S_addr:=inet_addr(PChar("127.0.0.1"));
 Host:=gethostbyaddr(@t, SizeOf(in_addr), AF_INET);
 Host.h_addr_list^:=PChar("192.168.1.110");
 result:=Host;
end;

Результат: ип адрес 49.57.50.46! И это если учесть, что хост это я. А если его нет? Нужно полностью структуру заполнить, если этого не сделать, следовательно ошибка будет. Ип адрес просто так Host.h_addr_list^:=PChar("192.168.1.110"); не получится туда загнать.


 
n_Shadow   (2006-12-21 21:53) [13]

Всем спасибо за помощь, я всё сделал!


 
novill ©   (2006-12-22 09:24) [14]

> [13] n_Shadow   (21.12.06 21:53)

Ну покажи как сделал-то. А то "так не получится", "так не получится"...



Страницы: 1 вся ветка

Текущий архив: 2007.07.29;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.022 c
15-1183108237
Skyle
2007-06-29 13:10
2007.07.29
DataSnap(Midas) и Turbo Delphi for Win32 Pro. Возможно ли?


15-1183121929
IMHO
2007-06-29 16:58
2007.07.29
Почему на постсоветском пространстве...


2-1182952331
prMan
2007-06-27 17:52
2007.07.29
прогрессбар


15-1182850117
sergeyst
2007-06-26 13:28
2007.07.29
Можно ли в поток добавить данные?


15-1183102300
Nucer
2007-06-29 11:31
2007.07.29
Помогите настроить WIPFW