Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Отлов появления коннекта [D5, Win95/98]


VID ©   (2002-02-16 19:30:00) 

Как поймать появление и разрыв соединения с инетом ?


Reindeer Moss Eater   (2002-02-20 08:55:00) [1]

Вот и конкретный ответ на конкретный вопрос:
Найди RAS.pas и он тебя спасет


VID   (2002-02-19 21:47:00) [2]

to wonder: ... а ещё перечитай"Правильный вопрос" :)

У меня нет локсети, нет сетевой карты, я пользуюсь мопедом, используя DualUp дозвон.. Просто, мне с моим модемом - этот метод подключения казался настолько естественным (никогда не пользовался локсетью, или инетом через неё, разве тчо в инеткафе... но там как-то не задумывалься об этом), что как-то в голову не пришло конкретизировать метод подклчения, и всё такое.

Скорее всего, правильно сформулированным, буде вопрос:
"Как определить имеется ли наличие соединения с провайдером, или даже - установлена ли DualUp связь". Пойдёт ?


Wonder   (2002-02-19 17:12:00) [3]

Вот представь себе обыкновенную локальную сеть.
На твоем компьютере стоит сетевая плата, настроены протоколы, все классно.
Как в этом случае ты задашь свой вопрос?
Есть ли связь с локальной сетью, или есть ли связь с проводами, или есть ли связь с соседом по сети? Сразу скажу, что с точки зрения программы, первые два вопроса - сущий бред.
Интернет - та же сеть. Невозможно определить, есть ли некая абстрактная связь с этой сетью. Можно определить, есть ли связь с определенными узлами этой сети или доступны ли некие сервисы в этой сети (что, впрочем, не говорит о наличии связи с какими-либо другими узлами). Можно определить наличие dialup-связи (то биш установленного RAS-соединения), но это же к интернету вообщем не имеет никакого отношения. Можно определить и IP-адреса, что также не говорит о наличии реальной связи с каким-либо узлом.
Сформулируй реальнуюзадачу.
Тогда самсразу получишь ответ. Без нашей помощи :)


VID   (2002-02-19 16:33:00) [4]

TO Winder:
Я плачу своему ISP только за траффик (1мб-3р). Повременки нет. Только вот ISP придумал такую затею: если я, в течении 10 мин, не качаю из инета чего-нибудь, и не отправляю туда ничего (т.е. не происходит обмена данными), то пров меня отрубает. А это не хорошо :))
Я написал прогу, которая кажду минуту делает запрос на aport.ru,
ну имеется ввиду, что она просто соединяеться с апортом, читает его заголовок, и отсоединяется. Передача данный при этом минимальна, и в этом случае пров меня уже не отрубает, так как постоянно (каждую минуту) идёт поток данных.

Всё бы хорошо, но ведь лучше, когда эта моя прога будет не всё время постоянно (каждую мин) пытаться коннектиться, а только при наличии соединения с провом. В принципе я сделал там, возможность автоматического выклюения попыток соединения, после 5-ти неудач, но вот активизировать прогу приходится всё-же самостоятельно (когда соединение появитсья), а это не есть GOOD.


А если прога сама может определить когда появилось соедининие с инетом, то сама автоматически возобновит свою работу.

Вот и все дела :)


Reindeer Moss Eater   (2002-02-19 14:25:00) [5]

Адресов на одном адаптере может быть аж 14, если не ошибаюсь


Wonder   (2002-02-19 14:24:00) [6]

Мда.
VID не сказал главного: а зачемнадо "поймать появление и разрыв соединения с инетом"?


Ghost.   (2002-02-19 14:14:00) [7]

Вот с помощью ееже и получишь адрес провайдера :0)


Люба   (2002-02-19 14:03:00) [8]

С помощью мышки :)


Ghost.   (2002-02-19 13:16:00) [9]

И как ты ей два адреса присаиваешь?


Reindeer Moss Eater   (2002-02-19 12:46:00) [10]

>Gost Я не работаю через прокси и сетевая у меня всего одна


Ghost.   (2002-02-19 12:40:00) [11]

>Reindeer Moss Eater
если ты работаешь через прокси то да, за сетевой картой можно закрепить только один, а другой за другой..я не имел ввиду, что он поменяется физически просто если соединение с интернетом происходит, через твой комп то вышеуказанная функция вернет адрес предоставленный провайдером а не адрес твоей карты..я-то так делаю


Reindeer Moss Eater   (2002-02-19 12:26:00) [12]

>GHOST
Не локальный, это значит не 127.0.0.1 и не из диапазона, зарезервировано для частных сетей.
А если у меня их несколько этих адресов?
192.168.5.14
194.186.151.14
И ни один не меняется, хоть есть инет хоть нет его.


Ghost.   (2002-02-19 11:00:00) [13]

>Reindeer Moss Eater Это как это отличный от локального? Локальный я не имел ввиду 127.0.0.1 локальный любой который хоть в твоей карте зашит
unit IPUnit;

interface
Uses SysUtils,WinSock;
Function GetLocalIP:String;
implementation
Function GetLocalIP:String;
type
TaPInAddr = array [0..10] of PInAddr;
PaPInAddr = ^TaPInAddr;
var
phe: PHostEnt;
pptr: PaPInAddr;
Buffer: array [0..63] of char;
i: Integer;
GInitData: TWSADATA;
begin
WSAStartup($101, GInitData);
Result := "";
GetHostName(Buffer, SizeOf(Buffer));
phe :=GetHostByName(buffer);
if phe = nil then Exit;
pptr := PaPInAddr(Phe^.h_addr_list);
i := 0;
while pptr^[i] <> nil do
begin
result:=StrPas(inet_ntoa(pptr^[i]^));
Inc(i);
end;
WSACleanup;
end;
end.

вот хоть с помощью такой функции..обязательно изменится


Reindeer Moss Eater   (2002-02-19 10:33:00) [14]

> Ghost У меня всегда есть IP отличный от локального, но не всегда есть соединение с интернетом


Dima-k17   (2002-02-19 10:12:00) [15]


1) Пинговать что-нить(постоянно)...

2) Постоянно мониторить функцией IfInetIsOffline

function InetIsOffline(Flag: Integer): Boolean; stdcall; external "URL.DLL";

if InetIsOffline(0) then
ShowMessage("This computer is not connected to Internet!")
else
ShowMessage(You are connected to Internet!");


Ghost.   (2002-02-19 09:49:00) [16]

Я предлагал еще способ может не самый удачный но иногда и полезный если по таймеру получать свой IP когда он станет отличен от лоального, значит присоединились и наоборот..а заодно и IP в инете получишь


Reindeer Moss Eater   (2002-02-19 08:39:00) [17]

Если у тебя с провайдером диалап, то можно проверить, установлено ли соединение с сервером удаленного доступа провайдера. Но если оно и есть, это еще не значит, что есть "СОЕДИНЕНИЕ С ИНЕТОМ"


UnderSun   (2002-02-18 20:54:00) [18]

Попробуй поискать в хелпе какие-нибудь Enum функции. Не уверен что такое есть, но все основные технологии Windows делают это именно через функции Enum(перечисление)


Наверх

Титульная страница Поиск, карта сайта Написать письмо