Jak przechwycić moment połączenia z net-em

0

Chciałbym zrobić licznik czasu połączeń z net-em.
Nie wiem jak przechwycić moment połączenia i rozłączenia.
Z góry dziękuję szanownym profesjonalistom za odpowiedzi


;-)

0

A może by tak ustawić Timer i po prostu co sekundę sprawdzać czy jest połączenie z netem ? bo z tym wykrywaniem momentu połączenia albo rozłączenia to chyba trudno jest.

0

W FAQ masz (o ile pamiętam) jak wykryć połączenie z netem. Kiedy wykryto połączenie odpal timer, który będzie liczył ile czasu jest połączenie a w momencie gdy połączenie zostanie nie wykryte zatrzymaj timer i zwróc wartość ile czasu trwało to połączenie.

[DOPISEK]
Aha, i jeżeli będziesz robił pętlę, która co chwilą bedzie sprawdzaćczy jest połączenie z netem nie zapomnij stworzyć następnego wątku

0

Trzeba by wlasnie do timera dać sprawdzanie czy jest połaczenie z internetem ... Borek w twoim przypadku mam to sprawdzanie dać do oncreate formy ?? a potem ondestroyed ?? :)

0

Chodzi mi o dokładność co do sekundy (taryfa tp)
, i zrobiłem pętlę która sprawdza co sekundę czy zaistniało połączenie.
Po wykryciu czasu połączenia znów co sekundę sprawdza kiedy nastąpi tryb offline...
i tutaj pojawia się problem program wpada w pętlę i zawiesza się
a poza tym musiałby działać w pętli przez cały czas gdy komp jest załączony

0

MOże dodaj w pęti sprawdzania:

Application.ProcessMessage

albo odpal to sprawdzanie w wątku...

0

Trzeba by wlasnie do timera dać sprawdzanie czy jest połaczenie z internetem ... Borek w twoim przypadku mam to sprawdzanie dać do oncreate formy ?? a potem ondestroyed ??

Może byc w on destroyed i oncreate, ale lepiej by było np. żeby uzytkownik sam mógł uaktywnić czy che aby teraz się prawdzało czy nie. Pamietaj o wątkach!!

0

Przejrzyjcie kod źródłowy programu bankrut [diabel]

0

Odpwiedzią jest również SleepEX. jego pierwszym parametrem jest czas do odczekania w milisekundach, a ten drugi parametr mówi czy ma reagować na błędy I/O (Input/Output czyli błędy wejścia/wyjścia). Jeżeli jest ustawione na false to dopóki nie minie czas wstawiony w pierwszym parametrze to nie będzie reagować na błędy. Jeżeli ustawisz na true to będzie reagowac na bledy. SleepEX rózni sie od sleep ty że nie blokuje wykonywania "reszty" programu. Czyli jezeli w tym czasie był np event OnTimer to sie wykona.

Poszukajcie juz kiedyś o tym było.

0

Też kombinuje nad napisaniem licznika połączeń i też mam problem z wykryciem połączenia. Większość źródełek jake zlalazłem w różnego rodzjau FAQ u mnie sie nie sprawdzają ponieważ mój komp jest w sieci LAN i przewaznie bez względu na to czy jestem połączony z netem czy też nie po kompilacji progsa zawsze wychodzi na to, że jestem podłączony.
Czy jest na to jakaś rada???

0

Też kombinuje nad napisaniem licznika połączeń i też mam problem z wykryciem połączenia. Większość źródełek jake zlalazłem w różnego rodzjau FAQ u mnie sie nie sprawdzają ponieważ mój komp jest w sieci LAN i przewaznie bez względu na to czy jestem połączony z netem czy też nie po kompilacji progsa zawsze wychodzi na to, że jestem podłączony.
Czy jest na to jakaś rada???

Ta wysylaj pakiety icmp na jakis serwer polecam microsoft,
rozmiar pakietu 65535 i ustaw zeby czekal tylko sekunde na odpowiedz ;)

0

Odpwiedzią jest również SleepEX. jego pierwszym parametrem jest czas do odczekania w milisekundach, a ten drugi parametr mówi czy ma reagować na błędy I/O (Input/Output czyli błędy wejścia/wyjścia). Jeżeli jest ustawione na false to dopóki nie minie czas wstawiony w pierwszym parametrze to nie będzie reagować na błędy. Jeżeli ustawisz na true to będzie reagowac na bledy. SleepEX rózni sie od sleep ty że nie blokuje wykonywania "reszty" programu. Czyli jezeli w tym czasie był np event OnTimer to sie wykona.

Poszukajcie juz kiedyś o tym było.

SleepEX nie blokuje ? Ciekawe...

PS. timerek i sprawdzaj czy jest połączony do internetu... w artykule jak pisać komponenty byl taki przykladowy co sprawdza polaczenie :-)

0

Też kombinuje nad napisaniem licznika połączeń i też mam problem z wykryciem połączenia. Większość źródełek jake zlalazłem w różnego rodzjau FAQ u mnie sie nie sprawdzają ponieważ mój komp jest w sieci LAN i przewaznie bez względu na to czy jestem połączony z netem czy też nie po kompilacji progsa zawsze wychodzi na to, że jestem podłączony.
Czy jest na to jakaś rada???

Cześć odgrzebałem ten post bo akurat jestem w temacie :)
Jest rada ! :)
Do procedury sprawdzającej połączenie musisz dodać linijkę odnośnie
adresu IP oraz nazwy Hosta.
np:

FUNCTION GetConnected:BOOLEAN;
var
 Flags    :DWORD;
 IP,Host :String;
Begin
 Flags:= INTERNET_CONNECTION_MODEM or  
             INTERNET_CONNECTION_LAN or
             INTERNET_CONNECTION_PROXY or   
             INTERNET_CONNECTION_MODEM_BUSY;
{tu dopisane - do procedury pobierającej adres IP oraz pełną nazwę   hosta}
 GetIP_Host(IP,Host);
 {rezultat zależny od aktywnego połączenia i odmiennego IP niż
  127.0.0.1 , oraz pełnej nazwy hosta }
 Result:= ( InternetGetConnectedState(@Flags, 0) ) and
              ( not (IP = '127.0.0.1') ) and
              ( not (Pos('.',Host)=0) );
End; 

PS. odnośnie procedur na pobieranie IP i Hosta są takowe w tutejszym FAQ
Dlaczego dodałem akurat pełną nazwę hosta ? Otóż bywało nieraz że
rozłączył się net i IP było inne niż moje, ale i nie równe 127.0.0.1
(jakieś inne za kazdym razem)

1 użytkowników online, w tym zalogowanych: 0, gości: 1