#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
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
Chodzi mi tutaj o podstawową funkcję connect(), czy można ją wykorzystać do tego aby połączyć się z adresem 8.8.8.8 potwierdzając tym samym że mamy dostępne połącznie interenetowe? Gdzieś przeczytałem że to wystarczy - taki prosty PING. Jednak kiedy oglądałem źródła komendy ping.c to tam nie korzystali z connect() tylko od razu po stwqorzeniu socketa dawali send() wysylajac
CAP_NET_RAW
na Linuxach. Na Windowsa jest specjalne API https://learn.microsoft.com/en-us/windows/win32/api/icmpapi/nf-icmpapi-icmpsendecho?redirectedfrom=MSDNWcześniej ci pisałem że takie sprawdzenie lepiej robić po HTTP
Jedyny sposób na sprawdzenie czy faktycznie masz połączenie z internetem to wysłanie zapytania w ten internet i oczekiwanie że otrzymasz odpowiedź. Zastanów