Главная страница
    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.037 c
15-1183550923
Kerk
2007-07-04 16:08
2007.07.29
http://www.delphimaster.ru/cgi-bin/forum.pl?id=1183525244&n=3


8-1161870623
Gamer
2006-10-26 17:50
2007.07.29
Рисование графиков


3-1177169820
Roven
2007-04-21 19:37
2007.07.29
Установка базы данных


2-1183383561
авыф
2007-07-02 17:39
2007.07.29
MS SQL 2005


15-1183371286
P
2007-07-02 14:14
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский