Wykryć wszystkie urządzenia połączone z routerem

0

Mam router WiFi i podłączone do niego kilka urządzeń. Czy jest technicznie możliwe, żebym z poziomu kodu wyciągnął listę IP urządzeń podłączonych do tego routera? Potrzebuję nawiązać między nimi łączność po TCP.

Czy nie lepszym rozwiązaniem będzie przydzielenie do jednego urządzenia statycznego IP? Wtedy każde nowe urządzenie najpierw połączy się z nim, a ten 'serwer' będzie mógł poinformować wszystkie inne hosty, ża dołączył nowy kolega?

3

Router (serwer DHCP w zasadzie) "wie", jakie urządzenia uzyskały od niego adresy. Jeżeli twój router ma stronę konfiguracyjną, na której to pokazuje, to najłatwiej będzie się z nią połączyć i wtedy takie informacje możesz wyciągnąć.

Czy nie lepszym rozwiązaniem będzie przydzielenie do jednego urządzenia statycznego IP? Wtedy każde nowe urządzenie najpierw połączy się z nim, a ten 'serwer' będzie mógł poinformować wszystkie inne hosty, ża dołączył nowy kolega?

Popularne i sensowne rozwiązanie. Tylko wtedy wszystkie podłączające się urządzenia muszą znać adres tego jednego.

Zamiast niego, aby zrobić automatyczne wykrywanie urządzeń w sieci możesz skorzystać z różnych mechanizmów autokonfiguracji, np. DNS-SD. Ogólnie to polega na multicast - nowe urządzenie wysyła "do wszystkich" pytanie, a poszczególne hosty odpowiadają "tu jestem, mój adres to". W podobny sposób działa m.in. wyszukiwanie innych komputerów w sieci Windows.

1

Podstawowa sprawa - czy te urządzenia będą miały zainstalowany jakiś soft napisany przez ciebie, albo coś innego służącego do komunikacji?

No i co oznacza "potrzebuje nawiązać między nimi łączność"?

Napisz może konkretniej co chcesz osiągnąć i co kombinujesz, to łatwiej będzie Ci pomóc.

0

@cerrato:

Tak, mają mój soft, który właśnie piszę. Aplikacja działająca na zasadzie pokazu slajdów. Kilka tabletów Android/iOS wyświetla synchronicznie interaktywne slajdy na tabletach użytkowników, a jeden znajdujący się w rękach prowadzącego, może te slajdy zmieniać.

Całość działa tylko w sieci LAN, bez dostępu do internetu. Mam zamiar wysyłać krótkie komendy po TCP, tylko do tego potrzebuję adresy IP. Mam pełen dostęp do routera, ale aplikacja będzie działać u klienta, więc sprawdzanie i ręczne wpisywanie adresów ze strony routera odpada. Musi działać 'out of the box'.

Urządzeń będzie niewiele, mniej niż 100, myślałem o ograniczonej puli ip i sprawdzaniu przez pingowanie, jakie adresy są obecne. Pomysł mniej elegancki, ale który wydaje mi się sensowniejszy i bardziej niezawodny, to przydzielenie jednemu urządzeniu statycznego ip, do którego każdy client będzie się odwoływał.

2

Multicast po UDP?

0

@Patryk27

Tablety muszą być idealnie zsynchronizowane. Czy wykorzystanie UDP nie stwarza przypadkiem możliwości zgubienia pakietu? Transferem się nie przejmuję, wiadomości są mikroskopijne.

2

Możesz wykorzystać multicast do znalezienia wszystkich urządzeń i potem połączyć się po TCP ;-)

1

Żeby nie powielać treści, jedyne co mogę dodać to to, że się w pełni zgadzam z @Patryk27 ;)

Sam tak rozwiązałem pewien czas temu problem w swojej aplikacji o architekturze klienci-serwer. Zależało mi, żeby całość była praktycznie bezobsługowa, więc zrobiłem tak, jak pisze @Patryk27: co kilka sekund serwer rozglasza po UDP multicast, a klienci są w trybie nasłuchu. Jak dostaną stosowny pakiet od serwera to od razu maja adres IP, z którym mogą się już dalej łączyć po TCP, przez co komunikacja jest dość wiarygodna (w przeciwieństwie do UDP, w którym jak sam zauważyłeś, pakiety mogą się gubic).

1

@Patryk27 @cerrato @Ktos

Działa świetnie. Serwer nadaje na Multicast, urządzenia łapią ip i rejestrują się do właściwej komunikacji po TCP. Prosto i elegancko.

Serdecznie wam dziękuję, pierwszy raz w życiu coś takiego robiłem, sam bym się nie połapał :).

0

Fajnie, że udało się pomóc oraz że tak szybko, jedynie po kilku wskazówkach, dałeś radę temat ogarnąć :)

Jak możesz to napisz w kilku zdaniach, co konkretnie kombinujesz i po co ci było te kilka tabletów do pokazywania zdjęć.

1

Prezentacje multimedialne. Po wejściu do sali, tablety ustawione są w formę jednego ekranu, na którym wyświetla się grafika/animacja brandu firmy. Uczestnicy prezentacji następnie biorą po jednym urządzeniu i gdy przeprowadzany jest wykład, mają na swoim tablecie wyświetlane informacje dot. tego co mówi prowadzący. Technicznie nie są to zdjęcia, a różnego rodzaju artykuły, modele 3D którymi można manipulować i ogólnie garść interaktywnych multimediów jak quizy czy głosowania.

Komunikacja jest potrzebna, żeby prowadzący mógł przechodzić do kolejnych punktów prezentacji, lub do dwustronnej komunikacji, np. w wypadku quizów, gdzie widzi wyniki. Musi iść po LANie, bo w niektórych halach nie ma internetu, więc korzystamy z mobilnego routera.

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