Главная страница
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.02 c
11-1166415709
SecurAdmin
2006-12-18 07:21
2007.07.29
KOL+ перетаскивание формы за любую ее точку


15-1182769614
AVS2007
2007-06-25 15:06
2007.07.29
деассемблированый код в delphi


2-1183624901
nord489
2007-07-05 12:41
2007.07.29
MainMenu


1-1175271189
Углук
2007-03-30 20:13
2007.07.29
Как окрасить TChartSeries?


2-1183419596
DagOT-R
2007-07-03 03:39
2007.07.29
Всё о трее