DELPHI | Automatyczne wykrywanie ip serwera FTP

0

Witam!
Mam za zadanie stworzyc wlasne FTP pracujace w sieci lokalnej. Wszystko prawie gotowe...
no wlasnie prawie, bo za nic nie moge zrobic zeby <ort>klijent </ort>automatycznie wyszukiwal mi ip
PC na ktorym stoi serwer. Probowalem na wszystkie sposoby, np.

W FormCreate
IdFTP1.Username := 'anonymous';
IdFTP1.Password := 'haslo';
i:=0;

W Buttonie onCLick

while idFTP1.connected do
begin
idFTP1.host:='192.168.1.'+inttostr(i);
try
idFTP1.connect();
except
i:=i+1;
end;
end;
end;

Ta metoda niby w teorii dziala, ale zanim on dojdzie do prawidlowej koncowki ip, szczegolnie
gdy jest ona duza to musi wykonac mase prob polaczenia, ktore dlugo trwaja. Ustawienie
allocate na -1 spowoduje przeciazenie sieci.

Jezeli ktos zna jakis sposob na automatyczne wykrycie ip PC na ktorym stoi serwer bylbym
wdzieczny za pomoc:)

Pozdrawiam

0

zrób to wielowątkowo i to w trzech fazach.
w pierwszej spinguj wielowątkowo wszystkie adresy w danej podsieci, jeśli będziesz mieć kilkadziesiąt wątków, to nawet przebicie się przez 16-bitową sieć zajmie raptem kilkanaście sekund. zbieraj adresy hostów, które odpowiedziały na pinga. uprzedzam, że indy nie jest thread-safe (ani ping, ani ftp).
w drugiej fazie spróbuj się połączyć z wcześniej wykrytymi hostami przez ftp, będzie ich znacznie mniej niż w pierwszej fazie, przez to szukanie będzie znacznie szybsze. oczywiście równiez rób to wielowątkowo. nie musisz do połączenia zaprzęgać całego komponentu do ftp, wystarczy nawiązać połączenie przez zwykły socket na porcie ftp (21, o ile pamięć mnie nie myli).
w trzeciej spróbuj się połączyć przez ftp z pozostałymi adresami (z tej racji, że serwer ftp mógł nie odpowiedzieć na ping). wielowątkowo.

jeśli w którymś momencie drugiego lub trzeciego etapu uda Ci się uzyskać połączenie, kończysz cały proces. dla 24-bitowej sieci (254 kompy) cały proces powinien trwać kilka, góra kilkanaście sekund.

chciałem Ci dorzucić pliki z pomocą, niestety coś się zesrało w kojocie i upload nie działa. http://critical.pl/~lukasz/ping_multithreaded.zip, a tu skompilowane: http://critical.pl/~lukasz/snmp.exe

0

Jakis blad wywala w tym programie ale mimo wszystko zrozumialem o co chodzi, wielkie dzieki [browar]

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