Wpis z mikrobloga

#programowanie #jezykc #ping #siecikomputerowe #programista Hej Mireczki, w jaki sposób stworzylibyście własny program który pokazywał by aktualny stan sieci, tj. czy jesteśmy ONLINE czy OFFLINE.

Zrobiłem to w ten sposób, że program rezydentny co np. 5 sekund wywołuje komendę ping 1 raz z adresem (8.8.8.8).. w zależności od wyniku zapisuje ONLINE lub OFFLINE to jakiejś zmiennej środowiskowej.

Zastanawiam się czy powinno się to zrobić sensowniej. W tym przypadku jesteśmy uzależnieni od zewnętrznej komendy ping która może być w danym systemie lub nie. Czy na przykład zamiast korzystać z ping - użyć jakiejś biblioteki sieciowej i wysłać jakiś minimalny 1 bajtowy pakiet danych gdzieś (gdzie?), co myślicie? No i program rezydentny musi nasłuchiwać co np. 5 sekund i sprawdzać.
  • 6
@PlugaweWarzywo: Windows i Mac robią request HTTP o prosty plik tekstowy. Dzięki temu dodatkowo wiedzą czy nie trzeba pokazać okienka z akceptowaniem regulaminu do publicznej sieci wifi, bo wtedy oczekiwana zawartość pliku się nie zgadza
https://devblogs.microsoft.com/oldnewthing/20221115-00/?p=107399
W Windowsie masz API żeby pobrać wynik tego sprawdzenia https://learn.microsoft.com/en-us/windows/win32/api/wininet/nf-wininet-internetgetconnectedstate

Tu jeszcze dochodzi dodatkowy problem - serwer na którym trzymasz ten plik może przestać działać - mało prawdopodobne w przypadku Microsoftu, ale jednak możliwe. Firewalle
@Gerax9: ICMP coraz częściej jest blokowane. Patent @gentooman z pobraniem pliku i/lub wykorzystaniem systemowych mechanizmów wydaje się sensowniejszy. @PlugaweWarzywo ja bym próbował połączyć się z jakimś serwisem i coś z niego ściągnąć. W Kinuksie pewnie bym jakiś plik stworzył w /var czy innym /tmp i tam zapisywał czy jest się online czy offline.