![]() |
Модераторы: Snowy, Poseidon, MetalFan |
![]() ![]() ![]() |
|
AlenaSmr |
|
|||
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 8.5.2006 Репутация: нет Всего: нет |
Доброе время суток!
Подскажите пожалуйста, как сделать проверку на наличие подключения по локальной сети. Подробнее: я пишу программу, которая получает данные с Active Directory и при запросе AdsGetObject(WinNT://'+domain+'/'+usr,IADsUser,user); если нет подключения по сети, вылетает ошибка. Я пишу try AdsGetObject('WinNT://'+domain+'/'+usr,IADsUser,user); except application.Terminate; end; и это помогает, когда сервер не доступен, или такого объекта нет в деректории, а когда нет сети не спасает. Заранее спасибо. |
|||
|
||||
Poseidon |
|
|||
![]() Delphi developer ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 5273 Регистрация: 4.2.2005 Где: Гомель, Беларусь Репутация: 4 Всего: 133 |
Самый надежный способ: пингуй сервер
![]() Есть еще способ, но если подключишься при этом к инету, то может отпределить как подключение к сети.
-------------------- Если хочешь, что бы что-то работало - используй написанное, если хочешь что-то понять - пиши сам... |
|||
|
||||
AlenaSmr |
|
|||
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 8.5.2006 Репутация: нет Всего: нет |
проверка на наличие инета, не подходит, так инета может и не быть, а при этом есть подключение.
Пробовала пинговать с помощью icmp, пингующая функция булеановского типа пишу: if ping(IPAddress)=false then application.Terminate; а обломись, отрубаю сеть запускаю прогу, а приложение не завершается, а выполняется дальше, я понимаю, что-то не так. Скорее проблема в этом IP_SUCCESS = 0; вот я и пишу: if PingReply.Status = 0 then result := true; Может у кого есть варианты пинга, я что-нить другое попробую |
|||
|
||||
Poseidon |
|
|||
![]() Delphi developer ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 5273 Регистрация: 4.2.2005 Где: Гомель, Беларусь Репутация: 4 Всего: 133 |
Это вот эта что-ли? У меня работает (есть и Ethernet и Internet)
еще посмотри вот тут: http://vingrad.ru/DELPHI-DLP-001111 -------------------- Если хочешь, что бы что-то работало - используй написанное, если хочешь что-то понять - пиши сам... |
|||
|
||||
AlenaSmr |
|
|||
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 8.5.2006 Репутация: нет Всего: нет |
Спасибо, у меня все работает как надо, а помогло вот что:
http://www.delphikingdom.ru/asp/answer.asp?IDAnswer=34633 |
|||
|
||||
Poseidon |
|
|||
![]() Delphi developer ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 5273 Регистрация: 4.2.2005 Где: Гомель, Беларусь Репутация: 4 Всего: 133 |
Это как-раз из тех вариантов, когда соеденение с интернетом (через тот же модем), определяет как соеденение с сетью.
-------------------- Если хочешь, что бы что-то работало - используй написанное, если хочешь что-то понять - пиши сам... |
|||
|
||||
Mechanic |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 228 Регистрация: 5.5.2006 Где: Kharkov, Ukraine Репутация: нет Всего: 7 |
А что значит "не спасает"? Позже вылетает exception? Так его можно отловить на уровне Application. Можно заюзать TApplicationEvents.OnException. Обычно все асинхронные сетевые исключения так отлавливаются. --------------------
Tell me the extensions of the files You backup and I'll tell You who You are.. ©Mch |
|||
|
||||
AlenaSmr |
|
||||
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 8.5.2006 Репутация: нет Всего: нет |
Спасибо, большое.
Я это поняла, когда использовала, сначала,думала, что не поможет, оказалась, была не права. А что касается
Это, действительно хороший вариант, спасибо. Сама я до этого не дошла. Теперь программа готова и я прсто счастлива! ![]() Всем огромное спасибо! |
||||
|
|||||
drkot |
|
|||
![]() Ищущий ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1042 Регистрация: 5.5.2006 Репутация: 0 Всего: 8 |
Можно определять IP адресс компьютера.
если есть то сеть сужествует (физические подключение при этом не важно главное адаптор и дрова стоят) -------------------- Ошибка не становится истиной по причине широкого распространения, как и Истина не становится Ошибкой из-за того, что никто её не видит. |
|||
|
||||
Poseidon |
|
|||
![]() Delphi developer ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 5273 Регистрация: 4.2.2005 Где: Гомель, Беларусь Репутация: 4 Всего: 133 |
Это смотря каким способом. Можно и 127.0.0.1 определить. Да и кто застрахован, что определится именно локальный IP, а не глобальный? В общем мпохое предложение. Самым правильным будет пинговать что-то, стабильно находящееся в сети. Например сетевой сервер.
-------------------- Если хочешь, что бы что-то работало - используй написанное, если хочешь что-то понять - пиши сам... |
|||
|
||||
drkot |
|
||||
![]() Ищущий ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1042 Регистрация: 5.5.2006 Репутация: 0 Всего: 8 |
и если на компе споит дуалап получать окно подключения ![]() а типи любом сетевом интерфейсе (даже при заглушке) на открытие сокета винда не ругается.
это можно определить только на "localhost" если запрашивать по "computer name" получится либо IP либо ответ о невозможности определить. Это сообщение отредактировал(а) drkot - 12.5.2006, 18:11 -------------------- Ошибка не становится истиной по причине широкого распространения, как и Истина не становится Ошибкой из-за того, что никто её не видит. |
||||
|
|||||
Poseidon |
|
|||
![]() Delphi developer ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 5273 Регистрация: 4.2.2005 Где: Гомель, Беларусь Репутация: 4 Всего: 133 |
Я не понял смысла этой фразы, но не думаю, что что-то стабильно нахоящееся, допустим, в локальной сети будет доступно через DualUp. Поэтому если мы это пропингуем, мы сможем узнать, подключены-ли мы в локалке. Так же и с инетом. Если мы пропингуем тот же гугл, то будем знать, что инетернет подключение доступно (не думаю что гугл будет доступен из локалки).
Один на локальную сеть, второй на ADSL, третий на соединение через спутник. Так вот допустим мне нужно определить есть ли у меня соединение с локалкой. Как? Даже если соединения не будет, то у меня будут еще 2 IP. По ним определять? -------------------- Если хочешь, что бы что-то работало - используй написанное, если хочешь что-то понять - пиши сам... |
|||
|
||||
drkot |
|
|||
![]() Ищущий ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1042 Регистрация: 5.5.2006 Репутация: 0 Всего: 8 |
Этот код вернет адрес интерфейса который считается основным в системе
принципиально это таже информация что и возвращаемая консольной командой "ipconfig". Если в системе настроено соединение с инетом через дуалап, то при попытке пинговать (или любой другой сетевой активности) система автоматически попутается установить соединение. К примеру на ноуте: пришел подключился к локалке, получил адрес, работаеш прога пингует сервер все класс. Сидиш в парке и тут прога попыталась послать пинг и видиш как пошло соединение через GPRS ![]() Пинг самый неудобные способ определения наличия сетевого подключения. Для проверки работоспособности сервера - да; но не соединения вообще. -------------------- Ошибка не становится истиной по причине широкого распространения, как и Истина не становится Ошибкой из-за того, что никто её не видит. |
|||
|
||||
Poseidon |
|
||||||
![]() Delphi developer ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 5273 Регистрация: 4.2.2005 Где: Гомель, Беларусь Репутация: 4 Всего: 133 |
Это смотря как пинговать. Если просто попытаешься "открыть" адрес, то конечно Винда захочет соединиться, а если попробуешь воспользоваться протоколом Ping, т.е. отослать пакет и получить ответ, то ничего видимого не произойдет.
-------------------- Если хочешь, что бы что-то работало - используй написанное, если хочешь что-то понять - пиши сам... |
||||||
|
|||||||
![]() ![]() ![]() |
Правила форума "Delphi: Сети" | |
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делится вскрытыми компонентами
Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Snowy, Poseidon, MetalFan. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Сети | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |