Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 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.045 c
1-1082525196
[BAD]Angel
2004-04-21 09:26
2004.04.11
как узнать количество файлов в папке?


7-1079529307
Dastin
2004-03-17 16:15
2004.04.11
Определение буквы CD


1-1080247462
Rulezz
2004-03-25 23:44
2004.04.11
Несколько вопросов........


8-1071140250
Зульфикар
2003-12-11 13:57
2004.04.11
В MediaPlayer - е нужно, чтобы работал


6-1075983418
Aleksandr
2004-02-05 15:16
2004.04.11
Непонятно с параметрами TSocketConnection





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