Форум: "Сети";
Текущий архив: 2004.04.11;
Скачать: [xml.tar.bz2];
ВнизКак определить IP шник, "забитый" в свойствах TCP ... Найти похожие ветки
← →
WM.DIGGER © (2004-02-02 08:35) [0]Уважаемые, возник вопрос. Есть локальная сетка, все компы объеденены в 1 рабочюю группу. На каждом компе в настроиках сетевого окружения -> свойствах TCP "жёстко забит" IP"шник. Проблема: прога, установленная на любой из компов этой сети должна определить IP этого компа. ИМЕННО тот, который забит в свойствах TCP протокола!
Ни одного работающего пример я так и не нашёл. Все примеры выдают локальный IP - 127.0.0.1 СРАЗУ ГОВОРЮ - ЭТО НЕ ТО!!!
Вот, написал я процедурку, которая отдаёт список всех IP на вашей машина (даже тех, которые присваеваются при подключении к нету по Dialup"у). (я её и раньше, здесь где-то писал, но ответа так и не получил!) Но вот определить, какой из них, именно тот, что нужен не получается!
procedure TForm1.Button1Click(Sender: TObject);
type wPInAddr = array[0..9] of PInAddr;
twPInAddr = ^wPInAddr;
var WPHE:PHostEnt;
WPTR:twPInAddr;
CharBuf:array[0..63] of Char;
IStep:Integer;
GInitData:TWSAData;
IPBuf:TStringList;
wVersionRequested:Word;
begin
IPBuf := TStringList.Create;
wVersionRequested := MakeWord(2,0);
wsaStartUp(wVersionRequested,GInitData);
GetHostName(CharBuf,SizeOF(CharBuf));
WPHE := GetHostByName(CharBuf);
if WPHE = nil then Exit;
WPTR := twPInAddr(WPHE^.h_addr);
IStep := 0;
while WPTR^[IStep] <> nil do
begin
IPBuf.Append(inet_ntoa(WPTR^[IStep]^));
inc(IStep);
end;
wsaCleanUp;
Form1.Memo1.Lines := IPBuf;
IPBuf.Free;
end;
Помогите! Как же определить IP"шник забитый" в свойствах TCP ??? :((((
← →
Wm.DIGGER © (2004-02-02 11:14) [1]Ответ найден!!! - нужно пропинговать самого себя!
GetHostName(CharBuf,SizeOF(CharBuf));
IdIcmpClient1.Host := CharBuf;
IdIcmpClient1.Ping;
на onReply получим
AReplyStatus.FromIpAddress; - это и есть тот самый IP"шник!
Но вот если на компе более 1 сетевой платы, вот тут ещё вопрос, что будет ! Если кто проверит, поделитесь опытом !
← →
Floppy (2004-02-02 12:52) [2]А если в момент пинга ты в инете, какой IP получишь?
← →
Verg © (2004-02-02 13:31) [3]
> Но вот определить, какой из них, именно тот, что нужен > не получается!
Для начала неплохо бы определиться с критериями "нужности".
В конфигурации хоста может быть забит, как ты выражаешься, не один адрес, а множество.
Понимаешь, и все они по-своему "нужны" :).
Есть еще полезная ф-ция GetIPAddrTable, тоже выдает список адресов хоста и тоже "нужных" :))
← →
PiboDIE © (2004-02-02 15:06) [4]Согласен с Verg, да и вообще почитайте на МСДН доки по библиотеке IPHlpApi. Там ОЧЕНЬ моного интересного.
А для использование этой библиотеки можно с Delphi-Jedi.org скачать IpHlpApi.zip. Это таблица импортируемых из IpHlpApi.dll функций, а так же описание требуемых классов. В общем дерзайте!
← →
WM.DIGGER © (2004-02-02 15:47) [5]to Floppy В нете ты или не в нете, этот пинг отдаст тебе IP именно твоего компа, т.к. фактически этот пинг в "нет не выходит" ...
← →
WM.DIGGER © (2004-02-02 15:55) [6]to Verg Ты не внимательно читал ... тот который нужен - имелось ввиду тот который находится в свойствах TCP ... Кстати, если у тебя 1 сетевуха, то и IP для неё 1! ... Хост действительно может иметь много IP, но это не те IP, которые "забиты" в настройках TCP.
А зачем использовать GetIPAddrTable если эта функция отдаёт тоже самой, что и описанное мной!?
Вообще проблемы конечно есть, например если вы не имеете прав администратора, то пропинговаться неполучиться ... Да и если, как я писал, стоит несколько сетевух, тоже трабла возникает!
А кто-нибудь может предложить реальный код, а не "пустые" советы :))) , как определить IP компа ?!?!!?
← →
Verg © (2004-02-02 16:01) [7]
> Кстати, если у тебя 1 сетевуха, то и IP для неё 1! ...
Прежде чем хамить, ты бы внимательнее заглянул в "Свойства TCP/IP" сетевого адаптера, а там бы ткнул в кнопуечек "Дополнительно".
А с таким хамским отношением - тут уж лучше на самом деле "забить" на твою яйца выеденного не стоящую "проблему".
← →
Andersen © (2004-02-02 16:16) [8]> если вы не имеете прав администратора, то пропинговаться неполучиться
Это еще почему, что пинговать могут только админы что ли?
← →
Wm.DIGGER © (2004-02-03 07:47) [9]to Verg Я не понял чего ты злишься!? Какое хамство, ты о чем! У меня и в мыслях небыло ни чего подобного !!! Ну, согласен тебя 1 сетевуха, то и IP для неё 1 это я конечно перегнул!:))) Но проблема между прочем "яйца выеденного" стоит! Ещё ни кто нормального решения не предложил. Так что если у тебя есть идеи то поделись!
to Andersen Пинговать то могут все, но мы пытаемся пропинговать себя! т.е. пинг мы посылаем, а затем "посылают нас" с нашим пингом :))) Вобщем как бы там нибыло это точно проверено на компе с ОС Windows Server 2003 ... С правами админа - всё OK, без них - Ошибка сокета 1003 (или 10003 не помню точно) ...
← →
Wm.DIGGER © (2004-02-03 07:57) [10]to Verg Кстати, вот возник ещё вопрос по ходу дела. Объясни, а зачем собственно для 1 сетевухи устанавливать несколько IP? Несколько IP говорит о том, что комп относится одновременно к разным сегментам сети, так? (если так, то зачем вешеть их на 1 сетевуху, это большая нагрузка и возможны "тормоза") ...
← →
Verg © (2004-02-03 07:59) [11]
> Так что если у тебя есть идеи то поделись!
Хорошо, чем тебя не устраивает GetIPAddrTable?
Это совершенно стандартный способ получить список IP адресов хоста. Перечисли по пунктам свои претензии к этой ф-ции.
← →
Verg © (2004-02-03 08:04) [12]
> Несколько IP говорит о том, что комп относится одновременно
> к разным сегментам сети, так?
Нет. Это означает, что комп принадлежит либо разным подсетям, либо имеет дополнительный IP адрес(а) в одной подсети, но как раз в одном сегменте (физическом) сети.
← →
Alex Konshin © (2004-02-03 08:12) [13]Тебе дали ответ - читай про IPHlp API.
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/iphlp/iphlp/ip_helper_start_page.asp
Любой адаптер может иметь много IP аресов (и не иметь ни одного).
Какой тебе нужен, тот и выбирай. Ты можешь выбрать нужный тебе интерфейс по тому, какой из них система считает наиболее подходящим для роутинга куда-нибудь (например, на сайт твоего провайдера), обычно это default интерфейс.
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/iphlp/iphlp/getbestinterface.asp
PS: И поменьше восклицаетельных знаков.
← →
Petrovitch (2004-02-04 14:43) [14]Я тоже бьюсь над этой проблемой
у меня не проходит класс - PHostEnt;
Что я здесь не понимаю?
← →
Verg © (2004-02-04 14:48) [15]
> Petrovitch (04.02.04 14:43) [14]
> Я тоже бьюсь над этой проблемой
> у меня не проходит класс - PHostEnt;
> Что я здесь не понимаю?
Куда не проходит?
← →
Alex Konshin © (2004-02-04 21:49) [16]В крынку не лезет! :)
PHostEnt не класс. Если бьешься над той же проблемой, то читай те же ответы.
← →
Verg © (2004-02-04 22:48) [17]http://delphimaster.net/view/6-1075796204/
Страницы: 1 вся ветка
Форум: "Сети";
Текущий архив: 2004.04.11;
Скачать: [xml.tar.bz2];
Память: 0.53 MB
Время: 0.039 c