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

Вниз

Как узнать свой IP в сетке а не в Инете....   Найти похожие ветки 

 
TankMan ©   (2002-11-27 03:06) [0]

Я только вот начал разбираться с работой в сети, и у меня возник такой вопрос, как узнать свой IP? Я тут на этом сайте нашел 2 примера... они находят локальный IP, но локальных-то 2... один в моей сетке, а другой в инете. И когда я в инете оба примера, которые есть на сайте выдают мне инетовский IP, а мне нужен свой... объясните бедному ламеру, покажите на пальцах (примере).


 
Wonder ©   (2002-11-27 10:21) [1]

var
WSAData : TWSAData;
p : PHostEnt;
Name : array [0..$FF] of Char;
begin
WSAStartup($0101, WSAData);
GetHostName(name, $FF);
p := GetHostByName(Name);
while (p.h_addr_list^ <> nil) do begin
memo1.Lines.Add(inet_ntoa(PInAddr(p.h_addr_list^)^));
inc(p.h_addr_list);
end;
WSACleanup;
end;


 
kostya   (2002-11-27 10:36) [2]

IdIPWatch1.LocalIP;
// На форму только компонент IdIPWatch1 кинь :-)


 
TankMan ©   (2002-11-27 23:24) [3]

>>kostya
Не глумись над человеком (на до мной) :)

>>Wonder
Ааа... а можно как нибудь узнать, какой из этих ИП - от локалки? (я то знаю, а прожка то как узнает? )


 
Ocean ©   (2002-11-29 12:35) [4]

Нужно посмотреть на зону. У локалки может быть А, В или С, у каждой свой диапазон ip. На память не помню, см. зоны LAN в рамблере.
Ну, а если админ построил сеть на реальных ip, тут я умолкаю...


 
TankMan ©   (2002-11-29 20:49) [5]

Так причем тут зоны? Зоны у инетовского и локального ИП, могут быть одинаковыми....
Так что получается, что никак и не узнаешь чтоли?


 
Alex Konshin   (2002-11-30 08:17) [6]

IP-адрес имеет интерфейс, а не компьютер, то есть, если правильно задать вопрос, то и ответ очевиден. И один интерфейс может иметь несколько ip-адресов.
Вопрос, который имеет хоть какой-то смысл, будет звучать так:
"Как узнать ip-адрес dialup интерфейса?" или
"Как узнать ip-address сетевой карты?".

И какой все-таки адрес ты хочешь получить?
Тебе нужно самому понимать, чем отличаются интерфейсы машины, какой из них тебе нужен и, соответственно, брать нужный адрес.

Но, по-моему проще достать адрес интерфейса, через который
идет роутинг на какой-то другой адрес.
Например, если сокет уже создан, то можно использовать WSAIoctl с SIO_ADDRESS_LIST_QUERY или SIO_ROUTING_INTERFACE_QUERY.
Описание смотри в MSDN (msdn.microsoft.com)

По поводу "зоны": человек хотел сказать "класс ip-адреса" (если мне память не изменяет). Речь идет о старших 2 битах адреса. Тебе это не поможет, так как это никак не характеризует интерфейсы (с точки зрения локальный/внешний).


 
TankMan ©   (2002-12-01 22:20) [7]

>>Alex Konshin
По поводу "зоны" - класса, я это знаю и этоже и имел ввиду...

>Вопрос, который имеет хоть какой-то смысл, будет звучать так:
>"Как узнать ip-адрес dialup интерфейса?" или
>"Как узнать ip-address сетевой карты?".

Мне нужен ip сетевой карты... вобщем и все...



 
TankMan ©   (2002-12-03 01:07) [8]

Ответа так и нету... прекрассно...


 
Alex Konshin   (2002-12-04 04:43) [9]

Тебе же объяснили, что в общем случае это не решается.
Можно, например, использовать роутинг: ты знаешь какой-то адрес в сети и запрашиваешь ip-адрес интерфейса через который идет роутинг на этот адрес. Это, пожалуй, единственный способ как-то отличить ip-адреса используя Winsock2.
Как ты будешь отличать интерфейсы, если сетевых карт несколько?
Одна сетевая карта может иметь несколько ip-адресов и даже интерфесов. Может, например, быть установлен какой-нибудь VPN, который будет выглядеть как сетевой адаптер и ip-адрес, например, назначен именно ему, а самой сетевой карте. Короче, если делаешь что-то для себя, то тогда ты можно делать какие-то преположения о конфигурации машины и, соответственно, можно понять что искать. Далее гляди в MSDN про iphlpapi.dll:
http://msdn.microsoft.com/library/en-us/iphlp/iphlp/about_ip_helper.asp
Но это, конечно, уже не Winsock.
А ты ведь даже не заикнулся о предполагаемой OS, чего ж от нас хочешь?


 
pwlusa ©   (2002-12-04 04:46) [10]

Паралельный вопрос, как узнать ip в инете?


 
Alex Konshin   (2002-12-04 05:02) [11]

Я уже ответил. Хотя что ты понимаешь под "ip в инете"?



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

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

Наверх




Память: 0.49 MB
Время: 0.021 c
6-96932
lamachok
2002-12-04 18:17
2003.01.30
winsock


1-96731
France
2003-01-22 13:06
2003.01.30
ListView.Selected.Index


3-96522
ihtiandr
2003-01-14 15:17
2003.01.30
Transaction


1-96720
Эли
2003-01-21 21:12
2003.01.30
Перетаскивание текста


3-96636
Сергей
2003-01-10 10:36
2003.01.30
Добавление записи илди изменение ее значения