Как да сканирам локална мрежа в търсене на сървър?

В процес съм на писане на малка програма, която ще се свърже с FTP сървър, работещ на телефон с Android (който е свързан чрез WiFi към същата мрежа). Нямам контрол върху кода на Android за FTP сървъра.

Проблемът е, че компютърът, изпълняващ моята програма, и телефонът имат динамично разпределени IP адреси и двата IP адреса се променят често.

Бих могъл да присвоя фиксирани IP адреси на ниво рутер, но бих искал нещо малко по-умно и по-удобно за потребителя. В резултат на това мисля, че имам нужда от моята програма да сканира всички IP адреси, търсейки телефона с работещ FTP сървър.

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

Така например, ако компютърът е 192.168.1.70 и подмрежовата маска е 255.255.255.0, тогава програмата ми трябва да сканира от 192.168.1.1 до 192.168.1.254, за да намери този телефон с FTP сървъра.

Като се има предвид, че не мога да променя кода на FTP сървъра, за да правя какъвто и да е вид излъчване, това ли е правилният начин за сканиране за съществуване на услуга? Ако не, как трябва да направя това?

Като бонус точка: има ли лесен начин да изчисля какъв диапазон трябва да сканирам във VB.net?


person Richard    schedule 16.12.2014    source източник
comment
Името на устройството неизвестно ли е на клиента? Също така: какво ще стане, ако друг FTP сървър се окаже активен в мрежата?   -  person Alex    schedule 16.12.2014
comment
Опитах да стартирам nbtstat -A с IP адреса на телефона и нищо не се връща, така че прав ли съм да приема, че името на устройството е неизвестно? Няма значение дали има други FTP сървъри, тъй като програмата ще се опита да се свърже (използвайки предоставените идентификационни данни) и ще продължи сканирането, ако те не работят.   -  person Richard    schedule 16.12.2014


Отговори (1)


Тъй като не знаете нищо за сървъра (нито името, нито адреса), търсенето му чрез сканиране на обхват изглежда единственият начин.

Относно диапазона можете да намерите решението другаде в SO, например този въпрос изглежда добър.

person Alex    schedule 16.12.2014