Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.11.14;
Скачать: CL | DM;

Вниз

NETBIOS и IP   Найти похожие ветки 

 
masqito ©   (2004-09-02 20:33) [0]

Подскажите пожалуйса, как зная NETBIOS имя получить IP адрес.
GetHostByName не устраивает тем что для его использования необходима переменная типа PHostEnt, а со String что то не получается.


 
Rouse_ ©   (2004-09-02 21:59) [1]

Не понял, а чем PHostEnt не устраивает?


 
VID ©   (2004-09-03 00:03) [2]

Rouse_ ©   (02.09.04 21:59) [1]
Ну как чем ! Она ж со стрингом не совместима ! ;)))


 
Дмитрий Ботвин   (2004-09-03 08:02) [3]

Что значит: "...Она ж со стрингом не совместима!".  
О какой несовместимости идёт речь?????
Вот нужный тебе код:

function HostToIP(Name: string): string;
 var
   WSAData: TWSAData;
   hostEnt: PHostEnt;
   addr: PChar;
 begin
   Result:="";
   WSAStartup($0101,WSAData);
   try
     hostEnt:=gethostbyname(PChar(Name));
     if Assigned(hostEnt) then
       if Assigned(hostEnt^.h_addr_list) then
         begin
           addr:=hostEnt^.h_addr_list^;
           if Assigned(addr) then
           Result:=Format("%d.%d.%d.%3.3d",[byte(addr[0]),byte(addr[1]),byte(addr[2]),byte(addr[3])]);
         end;
   finally
     WSACleanup
   end
 end;


 
Дмитрий Ботвин   (2004-09-03 08:07) [4]

Получишь IP в виде 192.168.222.010 c приоритетными нулями, т.е
можешь потом сортировать их и IP сортируются корректно в виде

192.168.222.010
192.168.222.011
.
.
.
.
192.168.222.141

а не как обычные строки при посимвольном сравнении


 
Verg ©   (2004-09-03 09:25) [5]

Будь поосторожнее с приоритетными нулями в IP адресах
Такая ф-ция, как inet_addr() воспримет это как признак, что соотв. часть IP адрес задана в восмиричном виде.
Т.о., что

 S := "192.168.222.010";
 sin.sin_addr.S_addr := inet_addr(pchar(S));

вернет адрес 192.168.222.8


 
masqito ©   (2004-09-04 09:48) [6]

Большое спасибо за помощь.
У меня вопрос по последнему комментарию. Как всё таки перевести адрес с приоритетными нулями в обычный вид (т.е 192.168.0.002 в 192.168.0.2). Редактирование стрингов не получается т.к. замещение .0 на . может не пройти в случае с 192.168.0.002 -> 192.168..02.


 
Дмитрий Ботвин   (2004-09-04 13:05) [7]

В моём примере замени Result=.... на
Result:=Format("%d.%d.%d.%d",[byte(addr[0]),byte(addr[1]),byte(addr[2]),byte(addr[3])]) и всё. Приоритетные нули я добавил
для удобства сортировки ...


 
VID ©   (2004-09-04 13:18) [8]

masqito ©   (04.09.04 9:48) [6]
Да неужели это проблема то ? Мне б твои проблемы :)


procedure TForm1.Button1Click(Sender: TObject);
var i,n,l:integer;
   s1,s2,c:string;
   procedure _add;
   begin
     s2 := s2 + inttostr(strtoint(c));
     if I<L then s2 := s2 + ".";
     c := "";
   end;
begin
 s1 := "198.162.001.015";s2:="";
 l := length(s1);
 for i := 1 to l do
   if s1[i]<>"." then c:=c+s1[i] else _add;
 _add;
 showmessage(s2);
end;


Добавь там try except end если твой s1 не такой уж надёжный...



Страницы: 1 вся ветка

Текущий архив: 2004.11.14;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.03 c
4-1096898356
Delphis
2004-10-04 17:59
2004.11.14
Смена обоев


10-1063603897
Dred2k
2003-09-15 09:31
2004.11.14
Delphi7, COM-сервер и Windows98 - странное творится


1-1099304890
kirilllius
2004-11-01 13:28
2004.11.14
Массив типа TImage


3-1098078738
Merlot
2004-10-18 09:52
2004.11.14
ib и novell


3-1097946906
techgl
2004-10-16 21:15
2004.11.14
Поиск в БД