Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Сети > IP- HOST


Автор: SoWa 5.11.2004, 06:29
Может быть глупый вопрос, но как по известному IP определить HOST компьютера?

Автор: Alex 5.11.2004, 19:47
Код

uses winsock  
-------  
function IPAddrToName(IPAddr : String): String;  
var  
 SockAddrIn: TSockAddrIn;  
 HostEnt: PHostEnt;  
 WSAData: TWSAData;  
begin  
 WSAStartup($101, WSAData);  
 SockAddrIn.sin_addr.s_addr:= inet_addr(PChar(IPAddr));  
 HostEnt:= gethostbyaddr(@SockAddrIn.sin_addr.S_addr, 4, AF_INET);  
 if HostEnt<>nil then  
 begin  
   result:=StrPas(Hostent^.h_name)  
 end  
 else  
 begin  
   result:='';  
 end;  
end;


Пример использования:

Код

procedure TForm1.Button1Click(Sender: TObject);  
begin  
 Label1.Caption:=IPAddrToName(Edit1.Text);  
end;

Автор: windy 4.12.2004, 19:10
попробуй через fastnet. NMFinger/IDFinger соответственно в Delphi6/7

Автор: windy 8.12.2004, 21:31
Memo1.Text:=NMFinger1.LocalPort; - это значит, что я вывожу в какое-то место какбы код или что там есть у портов. я в сетях не особо разбираюсь. я обращаюсь по порту 80, как положено но получаю вот это ,18,0. не пойму почему так происходит? ведь по идее он должен был выдать 80? или нет?
полный код проги:
procedure TForm1.Button1Click(Sender: TObject);
begin
NMFinger1.User:=Edit2.Text;
NMFinger1.Host:=Edit1.Text;
NMFinger1.Port:=StrToInt(Edit3.Text);
Memo1.Text:= 'локальный IP'+#13#10+NMFinger1.LocalIP+#13#10+'имя пользователя+#13#10+NMFinger1.User+#13#10+'хост'+#13#10+NMFinger1.Host+#13#10+локальный адрес+#13#10+NMFinger1.GetLocalAddress+#13#10+строка порта'+#13#10+NMFinger1.GetPortString;
end;
выдает следующее:
локальный IP
212.116.227.87
имя пользователя
snaker
хост
localhost
локальный адрес
188,243,18,0
локальный порт
,18,0

что делать и как это понимать?

Автор: dm9 9.12.2004, 17:46
Alex, использую твой код.

1. Ввожу мой реальный IP-адрес - выдаёт не моё доменное имя, а имя компьютера (как он видится в локальной сети). С другими компьютерами локалки всё нормально.

2. (Тут уже не по твоему коду вопрос, но всё равно интересно.) Ввожу свой IP-адрес, соответствующий второй сетевой карте (служит для соединения с другим компьютером). На выходе - mitya.mshome.net. Видимо, mshome.net где-то прописывается по умолчанию, но вот где, интересно...

Автор: Alex 9.12.2004, 21:25
dm9, вообще насколько я понимаю, мой код берет информацию из DNS, поэтому все вопросы к нему. Но я могу ошибаться.

Автор: dm9 9.12.2004, 21:40
Нет.

1) 2-й пункт. DNS меня по IP 192.168.0.1 знать не может по определению.
2) 1-й пункт. Все компы в сетке, кроме моего, отображаются с нормальным доменным именем.
3) У меня в файле hosts прописана одна машина по-своему. Когда ввожу её IP, показывает то, что написано в hosts. Убираю запись - показывает нормальный хост.

Вывод - обращение к DNS идёт только если нет записи на своей машине.
Вывод 2 - если кому-то очень надо, чтобы всё работало корректно, надо либо не прописывать ничего в hosts и не проверять свою машину, либо искать способ непосредственного общения с DNS-сервером.

PS Мне особо не надо, я так, из любопытства...

Автор: windy 9.12.2004, 21:44
Alex а что насчет моего вопроса? пожалуйста smile я не знаю уже как с ним бороться. всё, что я могла придумать испробовала. он же должен выдать 80? а не ,18,0?

Автор: Alex 9.12.2004, 22:00
windy, после прочтения http://booksandmore.narod.ru/part_two/secrets/internet_comp.html я понял, что вам вроде все правильно возвращают.
Добавлено @ 22:01
А вообще 1 топик 1 вопрос.
Добавлено @ 22:02
http://www.yandex.ru/yandsearch?text=NMFinger&tb=1

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)