Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 2007.07.29;
Скачать: [xml.tar.bz2];

Вниз

Заполнение структуры 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.044 c
3-1177075901
Krants
2007-04-20 17:31
2007.07.29
ошибка при записи, ADO


1-1179757767
Kolan
2007-05-21 18:29
2007.07.29
TObject.Create(без переменной), как добраться до полей?


15-1183142815
homm
2007-06-29 22:46
2007.07.29
Вопрос по обновлениям Windows


2-1183635867
Кирей
2007-07-05 15:44
2007.07.29
Подключение сетевого диска


3-1177344935
Juice
2007-04-23 20:15
2007.07.29
Результат ХП как рез. поле запроса





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский