![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как узнать IP имени машины? [D5, Win2k, WinXP]
Uran © (2002-12-02 12:00:00)Понадобилось быстренько написать программу определяющая по имени машины IP адресс .... вроде всё просто ..
var
WSAData : TWSAData;
p : PHostEnt;
Name : string;
begin
WSAStartup($0101, WSAData);
p := GetHostByName(Name);
showmessage(inet_ntoa(PInAddr(p.h_addr_list^)^));
WSACleanup;
end;
всё работает нормально когда пытаюсь определить айпишник компа впределах своей рабочей группы ... когда из другой ругается .."Acces violation .... " где моя ошибка подскажите пожалуйста...
Wonder (2002-12-02 14:05:00) [1]Так посмотри, что за ошибка-то!
GetLastError()
Uran (2002-12-02 14:00:00) [2]Прости за навязчивость .. я никак не пойму что делаю не так ...
компьютер в сети есть и виндой винен .... почему ф-ия завершается ошибкой?
опиши, пожалуйста на примере если не сложно! :)
Wonder (2002-12-02 13:57:00) [3]С помощью ее же. GetHostByName()
Uran (2002-12-02 13:51:00) [4]компьютер в сети есть! :(
возник встречный вопрос, а с помощью какой фу-ии можно определить IP по netbios?
Wonder (2002-12-02 12:27:00) [5]Access violation у тебя появляется из-за того, что ты не анализируешь результат вызова GetHostByName().
Т.е. GetHostByName() выполняется с ошибкой и возвращает nil.
If no error occurs, gethostbyname() returns a pointer to the hostent structure described above. Otherwise it returns a NULL pointer and a specific error number may be retrieved by calling WSAGetLastError().
Вообще-то, строго говоря, эта ф-ция предназначена для определения IP-адреса по имени хоста, а не по netbios-имени (хотя в сетях Microsoft так тоже можно).
Попробуй сначала "Пуск->Найти->Компьютер" и найти компьютер из другой раб. группы. Если найдется - запусти свою программу и попробуй.