Pokaż wyniki od 1 do 7 z 7

Temat: [TUTORIAL][DELPHI] Piszemy prosty skaner portów

  1. #1
    Użytkownik
    Dołączył
    01-05-2007
    Posty
    62

    Domyślnie

    Witam w moim pierwszym tutorialu.
    Traktował będzie on o pisaniu skanera portów
    Skaner będzie oparty o standartowe komponenty dostępne w delphi. Do jego napisania nie użyłem socketów,
    ale jeśli ktoś koniecznie chce, zmiana kodu jest bardzo łatwa.

    Zasada działania jest prosta:
    Po aktywacji timera TCPClient łączy się z portem - jeśli połączony dostajemy komunikat,
    następnie TCPClient rozłącza się, zwiększa aktualny port o 1 i powtarza całą procedurę.

    Więc do rzeczy:

    1.Potrzebne:
    -Delphi 7
    -Wyobraźnia i mózg

    2.Zaczynamy pisać:

    Na formę wstawiamy:
    3xEdit
    2xButton
    1xLabel
    1xTimer /zakładka SYSTEM/
    1xTCPClient /zakładka INTERNET/ /Niedostępny w Delphi 7 personal, dostępne tu: http://p3o.yoyo.pl/dclnet70.bpl /
    1xMemo

    U mnie wygląda to mniejwięcej tak:



    Pod VAR /deklaracja zmiennych/ wklejamy:

    Kod:
    **portmin:integer;
    **portmax:integer;
    **IP:string;
    **port:integer;
    Są to zmienne odpowiedzialne za adres IP, oraz porty /aktualny, początkowy, docelowy/

    Klikamy 2x na Button1 i wklejamy kod:

    Kod:
    ** Memo1.Clear;
    ** IP:=Edit1.Text;
    ** portmin:=StrToInt(Edit2.Text);
    ** portmax:=StrToInt(Edit3.Text); 
    ** port:=portmin;
    ** TcpClient1.RemoteHost:=IP;
    ** Timer1.Enabled:=true;
    ** Memo1.Lines.Add('Skanowanie rozpoczęte');
    ** Button1.Enabled:=false;
    ** Button2.Enabled:=true;
    Kod odpowiada za podanie IP do klienta, aktywowanie timera oraz włączenie/wyłączenie przycisków.
    Funkcja StrToInt zamienia typ String na Integer.

    Następnie klikamy 2x Button2 i wklepujemy:

    Kod:
    ** Timer1.Enabled:=false;
    ** Memo1.Lines.add('Skanowanie przerwane');
    ** Button1.Enabled:=true;
    ** Button2.Enabled:=false;
    Tutaj deaktywujemy Timer oraz dajemy na Memo komunikat.

    Po tym, w zdarzeniu OnTimer wklejmy kod:

    Kod:
    ** Label1.Caption:=IntToStr(port);
    ** TcpClient1.RemotePort:=IntToStr(port);
    ** if TcpClient1.Connect=True then
    
    **** Memo1.Lines.Add(IntToStr(port)+' : open');
    **** inc(port);
    
    ** if port > portmax then
    **** begin
    ********Timer1.Enabled:=false;
    ********Memo1.Lines.Add('Skanowanie zakończone');
    ********Button1.Enabled:=true;
    ********Button2.Enabled:=false;
    ********port:=0;
    end;
    Jest to najważniejsza część skanera, odpowiada właśnie za sprawdzanie portów.
    Timer co określoną ilość czasu /Interval/ wykonuje instrukcje zawarte w zdarzeniu onTimer /proponuję ustawić na 200/.
    Pierwsza instrukcja warunkowa IF sprawdza czy jest połączenie z danym portem. Jeśli jest - daje na Memo komunikat oraz zwiękasza port o jeden /inc(port)/.
    Druga zaś sprawdza czy nie port docelowy nie został osiągnięty. Jeśli tak, program deaktywuje timer i ustawia port aktualny na 0.


    W FormCreate formy dajemy kod czyszczący Memo:

    Kod:
    Memo1.Clear;
    Po skompilowaniu, jak widać skaner działa:



    Jeśli ktoś znalazł jakieś błędy, proszę pisać.

    Pozdrawiam

  2. #2

    Domyślnie

    Ja znalazłem..Nie napisałeś, że na edycji Presonal w/w komponentów nie ma

  3. #3
    Użytkownik
    Dołączył
    01-05-2007
    Posty
    62

    Domyślnie

    No tak, zaraz wrzuce je gdzies

  4. #4
    Użytkownik (R) Avatar djmentos
    Dołączył
    01-05-2007
    Skąd
    Gdansk, Poland, Poland
    Posty
    1 862

    Domyślnie

    Nie, to nie jest dobry artykuł. Po pierwsze bardziej podchodzi pod gotowca.
    Grunt, że coś innego niż Sockety.

  5. #5
    Użytkownik
    Dołączył
    01-05-2007
    Posty
    62

    Domyślnie

    Tak wiem, już opisałem kod i muszę jakoś zedytować mojego tutoriala.

  6. #6
    Użytkownik
    Dołączył
    08-03-2009
    Posty
    21

    Domyślnie

    Gdzie mam wstawić ten plik TCPClient ?

  7. #7
    Użytkownik (R) Avatar djmentos
    Dołączył
    01-05-2007
    Skąd
    Gdansk, Poland, Poland
    Posty
    1 862

    Domyślnie

    Gdziekolwiek, pod warunkiem, że wpiszesz go do listy katalogów z bibliotekami w ustawieniach. A jak nie chcesz tego dopisywać do kopiuj do kaatalog Lib w folderze Delphi.

Podobne wątki

  1. Tutorial: Piszemy notatnik(szczegółowo opisane)
    Przez Bezel21
    w forum Delphi/Pascal
    Odpowiedzi: 11
    Ostatni post / autor: 01-10-2011, 21:51
  2. [TUTORIAL]Piszemy interpreter wlasnego prostego jezyka programowania
    Przez grzonu
    w forum Tutoriale - częste pytania i odpowiedzi.
    Odpowiedzi: 0
    Ostatni post / autor: 06-05-2009, 18:40
  3. Odpowiedzi: 2
    Ostatni post / autor: 15-05-2008, 22:23
  4. Skaner portów
    Przez chudy1993
    w forum Hasla - Skanery - IP ...
    Odpowiedzi: 10
    Ostatni post / autor: 17-02-2008, 08:42
  5. Skaner portów
    Przez Andrevus
    w forum Inne
    Odpowiedzi: 5
    Ostatni post / autor: 18-05-2003, 17:53

Uprawnienia

  • Nie możesz zakładać nowych tematów
  • Nie możesz pisać wiadomości
  • Nie możesz dodawać załączników
  • Nie możesz edytować swoich postów
  •