' Port Tarayicimizi Burdan oldugu gibi Paste leye bilirsiniz...
' Gerekli gordugum seyleri kodumuzun icinde anlattim...
' Ilk once Form Penceresinde gerekli duzenlemeler yapilir.
' 5 Button, 5 tanede Text Box, 1 Timer ve 1 de Winsock yaratiliir.
' Buttonlar:
' 1 Button Butun Portlari taramasi icin.
' 2 Button Tara/Durdur olarak yaratilir.
' Port Tarayicimiza ben bide Zamanlayici eklemek istedim;
' belirttigimiz zamana gore tarama yapmasi icin...
' 2 Buttonda Zamanlayicinin Ac/Kapati olacak.
' Text Boxlar:
' 1 Text Box Zamanlayicinin Saniye gostergesi olacak.
' 2 Text Box Baslangic ve Bitis Portunu gosterecek.
' 1 Text Box Taranan Portlarin gosterilmesi icin olacak.
' Ve Son olan Text Box da Tarama sirasindaki gerekli bilgilerin yazilacagi yer olacak.


' Bazi degisimler yapmaniz gerekiyor cunku yazdigim kodda ben oyle yaptim.

' Formumuza koydugumuz Timer in ismini "saniye2" yapin
' Eger Visual Basic ToolBox inizda Winsock yoksa ToolBox a sag okla tiklayin,
' Components a girin ve ordan secin.
' Formumuza koydugumuz Winsock in ismini "soketler" yapin
' Text1.Text -----> ilkPort.Text (Textine 1 yazin)
' Text2.Text -----> sonPort.Text (Textine 65530 yazin)
' Text3.Text -----> tanananPortlar.Text
' Text4.Text -----> liste.Text (MultiLinei "True" ve ScrolBarsi "Vertical" yapin)
' Text5.Text -----> saniye.Text (Textine 60 yazin boylelikle her 1 dakikada bir tarama yapar)
' Command1 -----> Tara (bu Commandlarda Name e yazilir Caption Farketmez)
' Command2 -----> Durdur
' Command3 -----> ButunPortlariTara
' Command4 -----> ZamanlayiciAc
' Command5 -----> ZamanlayiciKapat

' Form uzerindeki tamamlamalarimiz bittikten sonra Kodlarimiza basliyoruz...
' Eeee artik baslamanin zamani geldi. Ilk once degiskenleri tanimliyoruz.

' ©opy®ight 2001 - Yigit Aktan
' [email protected]
Dim portnumarasi As Long
Dim Baslat As String
Dim Zamanlayici As String

Private Sub Tara_Click()
Durdur.Enabled = True
If ilkPort.Text = "" Then
' Scannerimizi bi salagin kullanacagini dusunerek, Port numaralarinin
' unutulmasi takdirde bize uyari mesaji vermesini sagliyoruz.
MsgBox "Tarama icin bir Port numarasi girin"
Exit Sub
End If
If sonPort.Text = "" Then
MsgBox "Tarama icin bir Port numarasi girin"
Exit Sub
End If

ilkPort.Locked = True
sonPort.Locked = True
Tara.Enabled = False
' soketler bizim bildigimiz WinSock :-)
soketler.Close
Baslat = True
liste.Text = " [Scannerin ismini falan yaz]"

Call portlartaraniyor
' Tarama bittiginde veya Durdur Buttonuna bastigimizda,
' bize hangi Portlar arasinda tarama yapildigini gostersin.
liste.Text = liste.Text & vbCrLf & "Tarama Sonucu: " & ilkPort.Text & "- " & tarananPortlar.Text & " arasindaki Portlar basariyla tarandi."
End Sub

Sub portlartaraniyor()
' Degiskeni tanimliyoruz.
Dim portnumarasi2 As Long
portnumarasi = ilkPort.Text
' sonPort.Text bizim duracagimiz Port numarasini belli ediyor..!!
portnumarasi2 = sonPort.Text
Durdur.Enabled = True
' Cikabilecek hatalardan dolayi tedbirimizi aliyoruz.
On Error GoTo hata
Do
' ilk Port tarandi simdi sira oteki Portlarda...
portnumarasi = portnumarasi + 1
DoEvents
If Baslat = True Then
' Soketleri kapiyoruz.
soketler.Close
DoEvents


soketler.LocalPort = portnumarasi
DoEvents
' burda programimizin buldugu acik Portlari bizim tarananPortlar
' kutumuza aliyoruz.
tarananPortlar.Text = portnumarasi
' Portlarimizi dinlemeye aliyoruz.
soketler.Listen
DoEvents
Else
' Eger Clicklerseniz durur
portnumarasi = 0
Tara.Enabled = True
ilkPort.Locked = False
sonPort.Locked = False
Exit Sub
End If
' soketleri tekrar kapatmaliyiz
soketler.Close
DoEvents
' burda tarama yapilirken portnumarasi yani ilkPort.Text e
' girilen degerin portnumarasi2 yani sonPort.Text e
' kadar olan degerlerin taranmasini sagliyoruz. Eger sadece > deseydik
' sonPort.Text deki deger taranmayacakti, >= dedigimizden
' sonPort.Text i de dahil ediyoruz.
' Burda Loop deyimi ile istenilen deger saglanincaya kadar
' tarama yapmasini sagliyoruz Loop dan once Do deyimini unutmayin sakin :-)
Loop Until portnumarasi >= portnumarasi2
' eger hatasiz olarak biterse...
portnumarasi = 0
Tara.Enabled = True
liste.Text = liste.Text & vbCrLf & "Tarama Tamamlandi" & vbCrLf
ilkPort.Locked = False
sonPort.Locked = False
hata:

If Err.Number = 10048 Then
' Acik olan Portlari bulup Listemize yazdiriyoruz.
liste.Text = liste.Text & vbCrLf & "Port " & soketler.LocalPort & " ACIK"
' geri don ve hatalarin nerde olduguna bak )
Resume Next
End If

End Sub

Private Sub Durdur_Click()
' Gegik kapama kodlari
Durdur.Enabled = False
Baslat = False
End Sub

Private Sub ButunPortlariTara_Click()
' baslangic ve bitis Portlarimiz Text Box imizda hazir bulunsunlar...
ilkPort.Text = "1"
sonPort.Text = "65530"

' Acmadan olmaz... :-)
ilkPort.Locked = True
sonPort.Locked = True
Tara.Enabled = False
' herzamanki gibi soketleri kapiyoruz.
soketler.Close
Baslat = True
liste.Text = " [Buraya mesela Port Scannerinizin ismini yazin]"

Call portlartaraniyor
End Sub


' Zamanlayicinin kodlarina burada basliyoruz...
Private Sub ZamanlayiciAc_Click()
' Zamanlayici acildiysa List Box kutumuza Acildigina dair bilgi yazsin.
Zamanlayici = True
ZamanlayiciAc.Enabled = False
' zaman ayarlamalari
saniye2.Interval = saniye.Text * 1000
liste.Text = liste.Text & vbCrLf & "Zamanlayici Acildi"
ZamanlayiciKapat.Enabled = True
saniye2.Enabled = True
End Sub

Private Sub ZamanlayiciKapat_Click()
' Zamanlayici kapandiysa List Box kutumuza Acildigina dair bilgi yazsin.
Zamanlayici = False

ZamanlayiciAc.Enabled = True
liste.Text = liste.Text & vbCrLf & "Zamanlayici Kapandi"
ZamanlayiciKapat.Enabled = False
saniye2.Enabled = False
End Sub

Private Sub saniye2_Timer()
If Zamanlayici = True Then
Zamanlayici = False
'Zamanlayicimizin saati geldiginde tarama yapmasi icin...
Call Tara_Click
End If
End Sub

__________________