Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

NETBIOS и IP [D6, WinXP]


masqito ©   (2004-09-02 20:33:00) 

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


VID   (2004-09-04 13:18:00) [1]

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 не такой уж надёжный...


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

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


masqito   (2004-09-04 09:48:00) [3]

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


Verg   (2004-09-03 09:25:00) [4]

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

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

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


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

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

192.168.222.010
192.168.222.011
.
.
.
.
192.168.222.141

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


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

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

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;


VID   (2004-09-03 00:03:00) [7]

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


Rouse_   (2004-09-02 21:59:00) [8]

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


Наверх

Титульная страница Поиск, карта сайта Написать письмо