Главная страница
    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.48 MB
Время: 0.033 c
3-1177250760
Антон Шестаков
2007-04-22 18:06
2007.07.29
Удаление из таблиц


2-1183614748
petvv
2007-07-05 09:52
2007.07.29
Paradox + D7 = Грабли


2-1183698279
Vasyl
2007-07-06 09:04
2007.07.29
Удаления из програмы


1-1179816164
leonidus
2007-05-22 10:42
2007.07.29
Как переконвертировать Color в Hex ?


2-1183627061
dwery
2007-07-05 13:17
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский