Форум: "Сети";
Текущий архив: 2005.01.23;
Скачать: [xml.tar.bz2];
ВнизОшибка в Win98 при определении IP-adressa Найти похожие ветки
← →
Diaskhan (2004-10-30 15:33) [0]Diaskhan from Kazakhstan .
Кто-нибудь сталкивался с ошибкой gethostbyname в Win98.
Простой код определения IP gethostbyname() нафик непашет
под Win 98 (4.10).
Подскажите другие способы нахождения IP.
Пробовал ws2_32.dll,Пробовал winsock2.dll - непомогает.
Еслия указываю ip в настройках сети вручную, то код работает..
А вот если ставить IP автоматом, то код просто напросто глохнет.. (прога виснет и все )...
Что посоветуете Мастера DELPHI. Я думаю что это ошибка win98.
И ни че с этим поделать нельзя....
А только выкинуть нафиг WIN98..(Вы уж извините за лексику ,уже 3 месяца парюсь с gethostbyname) ...
А написать я собственно хотел алгоритм поиска полного сетевого древа и засунуть его в CHAT-проггу...
(-это поддерживаемый символ).
← →
Vit@ly © (2004-10-30 17:20) [1]К gethostbyname() под Win98 у меня претензий нет (какого сетевого дерева, для локалки?).
Выложи хотя бы частично код
← →
Piter © (2004-10-30 17:43) [2]ошибка у кого-то в ДНК...
← →
Diaskhan (2004-11-01 20:15) [3](Насчет ДНК хорошо подкололи).
Пишу я chat проггу..
В ней есть treeviev, туда я сую все домены, группы,и хосты (в иеарархическом порядке).
После нажатия на имя хоста должен определятся IP.
Но прога виснет..
Замечу что, другая программа (которая тоже написана на delphi) тоже не может
определить свой и чужой IP"ник (win98) .
А после того как я впишу IP"ник вручную в TCP протоколе, прогга в состоянии определить любой IP"ник.
Еще раз повторяю поблема лежит
в том,что если в установках TCP протокола (win98 )
ставить автоназначение IP, то из-за gethostbyname виснет прогга,
для локального и удаленного хоста.
А если в установках TCP протокола ставить IP"ник вручную, то код пашет.
Возможно bug?(win 98).
Если никто не понимает, то я хочу узнать другие
функции определния IP, и если кто знает в чем заключается ошибка(win 98)
- подскажите пожалуйста..
В коде нет никаких ошибок, так как я брал их с faq"ов .
Может проблема заключается в тонкости настроек TCP-протокола.
Я хочу понять в чем заключается ошибка win98,
так как знаю что мой код в порядке(взятый с различных faq"ов).
А вы сами понимаете IP"ник в любом случае должен определятся.
Так как это базовое условие сети.
Кто хочет реально помочь мне - Могу выслать исходники..
1.Это пробовал
function LocalIP: string;
type
TaPInAddr = array[0..10] of PInAddr;
PaPInAddr = ^TaPInAddr;
var
phe: PHostEnt;
pptr: PaPInAddr;
Buffer: array[0..63] of Char;
I: Integer;
GInitData: TWSAData;
begin
WSAStartup($101, GInitData);
Result := "";
GetHostName(Buffer, SizeOf(Buffer));
phe := GetHostByName(buffer);
if phe = nil then Exit;
pPtr := PaPInAddr(phe^.h_addr_list);
I := 0;
while pPtr^[I] <> nil do
begin
Result := inet_ntoa(pptr^[I]^);
Inc(I);
end;
WSACleanup;
end;
2.Это пробовал
const winsock_version=$0101;
var Name :pchar; wsadata:tWSAData; p:PHostEnt;
begin
try
WSAStartup(WINSOCK_VERSION, WSAData);
p := GetHostByName(PChar(TreeView.Selected.Text)); {виснет}
edit1.text:=(inet_ntoa(PInAddr(p.h_addr_list^)^)); except end;
WSACleanup; end;
← →
Verg © (2004-11-01 20:45) [4]
> А вот если ставить IP автоматом, то код просто напросто
> глохнет.. (прога виснет и все )...
DHCP ? А он вообще есть в сети-то?
Вот нет его и твой комп не получает Ip адрес. Ну и все, кирдык ему навечно.
- это что, цитаты из кроссворда?
← →
Diaskhan (2004-11-03 00:08) [5]Дорогой VERG пожалуйста разьесни че почем и как его настроить.
И вообще он в win98 ставиться автоматом или нет. (дай ссылку как бороться с этим).
И существуют ли другие способы нахождения IP.(ответь пожалуйста).
А (скаже по секрету)-это комбинация клавишы ctrl+backspase(в текстовом редакторе).
← →
Verg © (2004-11-03 00:27) [6]Ну если ты сказал компу получать IP адрес автоматически, то это значит, что ты ему сказал запрашивать параметры сети от сервера. От сервера под названием DHCP. Т.е. в этой сети должен присутствовать (быть в наличии) этот самый DHCP-сервер. Если твой комп не сможет получить параметры сети (IP - адрес в первую очередь) от этого сервера, в силу его (DCHP-сервера), например, отсутствия, то и комп твой будет "болтаться" в IP сети, как неприкаянная душа. А так как выяснялки типа GetHostByName производятся при непосредсвенном участии DNS сервера (который хронит в себе, грубо говоря, таблицу соответствия имен компов и их IP адресов) посредством протокола UDP, базирующемся на "движеке" IP, то без получения IP адреса, никакой такой сервис живым стать не может в принципе.
← →
Verg © (2004-11-03 00:28) [7]
> А (скаже по секрету)-это комбинация клавишы ctrl+backspase(в
> текстовом редакторе).
Я не кому не скажу - ты мне объясни нафига ты эти квадратики в свои посты вставляешь?
← →
Digitman © (2004-11-03 12:38) [8]
> В коде нет никаких ошибок, так как я брал их с faq"ов .
с каких это пор faq"и являются гарантией "безошибочности" того, что в них нахреноверчено самым разношерстным народом ? зачастую попросту дилетантами ?
> код просто напросто глохнет.. (прога виснет и все )
на то есть встроенный отладчик.
который покажет, действительно ли "вис" происходит именно на GetHostByName
склонен предположить, что это не "вис", а таймаут ожидания ответа DNS-сервера .. который заведомо ненулевой .. вероятно, ты просто не дожидаешься возврата из блокирующей ф-ции GetHostByName, полагая, что процесс "висит"
далее.
вот ты пишешь p := GetHostByName(чего-тот там)
почему не анализируешь рез-т работы ф-ции ? опять же при том предположении, что ты попросту не дожидаешься ее завершения ?
← →
Diaskhan (2004-11-03 15:06) [9]И что не получится определить IP
И что надо настройть DHCP ?
А вобще стоило бы создать FAQ терминологию.
← →
Verg © (2004-11-03 15:12) [10]
> Diaskhan (30.10.04 15:33)
> А вот если ставить IP автоматом, то код просто напросто
> глохнет.. (прога виснет и все )...
Так. Все с начала.
Что тебя заставляет "ставить IP автоматом"? Зачем?
← →
Diaskhan (2004-11-03 19:46) [11]Удалено модератором
Примечание: За речью следи...
← →
Diaskhan (2004-11-05 00:00) [12]Im sory for my Russia .
..::VIRG::.. Просто я хотел бы сделать независимую проггу .
Которая была бы универсальной.
Если я не разбирусь с этим ,то буду считать свою прогу полным отстоем.. И пропадет вообще желание ее доделовать.
А я хочу сделать проггу по совести, сделать 1 раз , нежели ее 100 раз переделавать.
Посоветую стоит ли эту проблему вообще решать.
Или это полнейший маразм.
Люди добрые подайте советов на программу.
Бох вас отблагодарит.
Хотя он сейчас занят.Можно чуть-чуть попозже.
А квадратик если чесно для понта ставил
(хотя это дешевые понты ).
Но все таки лучше иметь ошибочно мнение, чем не иметь вообще никакого.
По типу 1 или 0. Лучше пускай 0 стремится к 1 ,чем никуда не сремится. 0>1...
То что от опыта пришло к опыту вернется ..::Ейнштеин::..
← →
Diaskhan (2004-11-06 21:10) [13]Удалено модератором
Страницы: 1 вся ветка
Форум: "Сети";
Текущий архив: 2005.01.23;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.038 c