Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 2004.11.14;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.039 c
1-1099390060
Basil
2004-11-02 13:07
2004.11.14
Путь к папке


10-1031254876
iZEN
2002-09-05 23:41
2004.11.14
CORBA умирает?


3-1097482563
PereZ
2004-10-11 12:16
2004.11.14
Как спрятать таблицу?


3-1097649858
AlexG
2004-10-13 10:44
2004.11.14
Подключение к БД в потоке


14-1098554938
Piter
2004-10-23 22:08
2004.11.14
Ищу архив ветки об обновлении FAQ





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский