Главная страница
    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.033 c
14-1098704369
DiamondShark
2004-10-25 15:39
2004.11.14
Я тут как-то книжку обещал...


3-1098107551
Andrey_
2004-10-18 17:52
2004.11.14
Загрузка рисунка из ttable в image


1-1099075729
Кот
2004-10-29 22:48
2004.11.14
Время


14-1098814791
Rouse_
2004-10-26 22:19
2004.11.14
Саунд трек к "Бар Гадкий Койот"


1-1099061901
ser_ega
2004-10-29 18:58
2004.11.14
Разрешение экрана и моя прога





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский