begin process at 2012 02 16 12:11:12
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

VB.NET

 > SCANNER DE PORT VB.NET

SCANNER DE PORT VB.NET


 Information sur la source

Note :
10 / 10 - par 1 personne
10,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :VB.NET Source .NET ( DotNet ) Classé sous :scanner, vb, net, scan, port Niveau :Initié Date de création :13/06/2007 Date de mise à jour :17/06/2007 12:55:21 Vu / téléchargé :12 712 / 858

Auteur : avatardu062

Ecrire un message privé
Commentaire sur cette source (33)
Ajouter un commentaire et/ou une note

 Description

   Ce scanner VB.Net est très lent alors j'éspère que vous pourriez m'aidez à l'optimiser petit à petit ou me dire si c'est la manière qui est pas bonne, merci...

Source

  • 'Variable à déclarer
  • Dim host As String
  • Dim port As Integer
  • Dim counter As Integer
  • 'A mettre dans le timer
  • Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
  • 'Définition des variable
  • counter = counter + 1 h'counter pour le timer
  • TextBox2.Text = counter
  • host = TextBox1.Text
  • port = TextBox2.Text
  • Dim hostadd As System.Net.IPAddress = System.Net.Dns.GetHostEntry(host).AddressList(0)
  • Dim EPhost As New System.Net.IPEndPoint(hostadd, port)
  • Dim s As New System.Net.Sockets.Socket(System.Net.Sockets.AddressFamily.InterNetwork, _
  • System.Net.Sockets.SocketType.Stream, System.Net.Sockets.ProtocolType.Tcp)
  • Try
  • s.Connect(EPhost)
  • Catch
  • End Try
  • If Not s.Connected Then
  • ListBox1.Items.Add("Port " + port.ToString + " est fermé ...")
  • Else
  • ListBox1.Items.Add("Port " + port.ToString + " est ouvert !")
  • ListBox2.Items.Add(port.ToString)
  • End If
  • Label3.Text = "Open Ports: " + ListBox2.Items.Count.ToString
  • End Sub
  • 'Pour le bouton afin de démarrer le scan
  • Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
  • ListBox1.Items.Add("Scanning: " + TextBox1.Text)
  • ListBox1.Items.Add("-------------------")
  • Button2.Enabled = True
  • Button1.Enabled = False
  • Timer1.Enabled = True
  • Timer1.Start()
  • End Sub
  • 'Le bouton pour l'arrêter
  • Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
  • Button2.Enabled = False
  • TextBox2.Text = "0"
  • 'set counter explained before to 0
  • counter = 0
  • End Sub
  • Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
  • 'stop button
  • Timer1.Stop()
  • Timer1.Enabled = False
  • Button1.Enabled = True
  • Button2.Enabled = False
  • End Sub
  • 'Voila on code est assez simple mais surement mal programmé etant donné que très lent,
  • 'J'éspère que sa servira les débutants et que des "pros" pourront m'aider à l'optimser.
  • 'Merci
'Variable à déclarer
 Dim host As String
    Dim port As Integer
    Dim counter As Integer

'A mettre dans le timer
 Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
      'Définition des variable
        counter = counter + 1 h'counter pour le timer
        TextBox2.Text = counter
        host = TextBox1.Text
        port = TextBox2.Text
     
        Dim hostadd As System.Net.IPAddress = System.Net.Dns.GetHostEntry(host).AddressList(0)
        Dim EPhost As New System.Net.IPEndPoint(hostadd, port)
        Dim s As New System.Net.Sockets.Socket(System.Net.Sockets.AddressFamily.InterNetwork, _
        System.Net.Sockets.SocketType.Stream, System.Net.Sockets.ProtocolType.Tcp)
        Try
            s.Connect(EPhost)
        Catch
        End Try
        If Not s.Connected Then
            ListBox1.Items.Add("Port " + port.ToString + " est fermé ...")
        Else
            ListBox1.Items.Add("Port " + port.ToString + " est ouvert !")
            ListBox2.Items.Add(port.ToString)
        End If
        Label3.Text = "Open Ports: " + ListBox2.Items.Count.ToString
    End Sub

'Pour le bouton afin de démarrer le scan
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        ListBox1.Items.Add("Scanning: " + TextBox1.Text)
        ListBox1.Items.Add("-------------------")
        Button2.Enabled = True
        Button1.Enabled = False
        Timer1.Enabled = True
        Timer1.Start()
    End Sub

'Le bouton pour l'arrêter
  Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Button2.Enabled = False
        TextBox2.Text = "0"
        'set counter explained before to 0
        counter = 0
    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        'stop button
        Timer1.Stop()
        Timer1.Enabled = False
        Button1.Enabled = True
        Button2.Enabled = False
    End Sub

'Voila on code est assez simple mais surement mal programmé etant donné que très lent,
'J'éspère que sa servira les débutants et que des "pros" pourront m'aider à l'optimser.
'Merci 

 Conclusion

Mon soft sera mis à jours au fur et a mesure de vos remarque et de vos conseil afin de le rendre plus rapide.
Sauf bien sûr si c'est une mauvaise méthode pour programmer un scanner en VB.Net.

Remarque ; C'est le seul scanner de port en VB.Net que j'ai put trouver sur ce site (sauf une classe).

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

17 juin 2007 12:55:21 :
Mise en ligne du projet compressé ...

 Sources de la même categorie

Source .NET (Dotnet) MODIFICATION DATE DE WINDOWS EN VB.NET ET VBA par us_30
Source avec Zip Source avec une capture Source .NET (Dotnet) ENVOI DE MAIL AVEC PIÈCE JOINTE par EhJoe
Source .NET (Dotnet) AMUSONS NOUS AVEC UN LABEL ^^ par Adn56
Source avec Zip Source avec une capture Source .NET (Dotnet) UN NAVIGATEUR INTERNET EN VB.NET par azrti
Source avec Zip Source .NET (Dotnet) CONVERSION DE DEVISE MONAITAIRE VIA UN SERVICE WEB par bigmonkey7

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture Source .NET (Dotnet) [VB.NET] SCANNER DE PORT MULTITHREADS + DELEGATE par nerone21
Source avec Zip Source avec une capture Source .NET (Dotnet) DÉMINEUR COMPLET EN VB.NET | COMPLETE MINESWEEPER IN VB.NET par GabSoftware
Source avec Zip Source .NET (Dotnet) PETITE JEU DU PENDU par khanssa
Source avec Zip Source avec une capture Source .NET (Dotnet) OPENTWAIN.NET par bouv
Source avec Zip Source avec une capture SCANNER (IP,PORT) 2 par Ulysse3

Commentaires et avis

Commentaire de NHenry le 13/06/2007 16:27:50 administrateur CS

Bonjour,

A la place d'utiliser un Timer, utilise un thread (System.Threading), si tu veux un exemple, recherche sur VBFrance, ou va voir sur mon site :
http://nhen0039.chez-alice.fr/

Commentaire de avatardu062 le 13/06/2007 18:31:13

Merci beaucoup,
je vais essayer de le changer comme sa je verrai si cela augmente la rapidité du scanner.
Si cela marche je réactualiserai ma source :)

Commentaire de avatardu062 le 13/06/2007 19:04:57

Arf, c'est la première fois que j'utilise les thread je n'arrive pas encore a l'utiliser dans ce cas la, je vais bosser sa ce soir...

Commentaire de avatardu062 le 13/06/2007 21:05:02

J'ai essayé des tas de technique, je pense qu'il faut utiliser "System.Threading.Timer", je vais penché sur cela.
Pouriez-vous me dire si je suis sur la bonne voix ?

Commentaire de NHenry le 14/06/2007 08:10:22 administrateur CS

Bonjour, presque :

Je pensais plutôt à System.Threading.Thread .

Fais une recherche dans les sources avec le mot "thread", tu verras, tout y est indiqué.

Commentaire de avatardu062 le 14/06/2007 10:01:32

Ok merci, j'avais fait fausse route avec "System.Threading.Time", je vais m'informer sur Thread, et je modifierai ma source si j'y arrive avec Thread :)

Commentaire de avatardu062 le 14/06/2007 11:40:13

   J'ai modifié plusieurs choses mais cela ne marche toujours pas, en effet il va vite, il fonctionne, il n'y as pas de probleme mais il me dit tout le temps que les ports sont fermes et je ne comprend pas pourquoi !
   Peut-être va t-il trop vite et il n'as pas le temps de monter une connéxion sauf la première, je sais pas...



Dim StartScan As Integer



    'Variable du scanner
    Dim ScanPort As Integer
    Dim Scan As New System.Net.Sockets.Socket(System.Net.Sockets.AddressFamily.InterNetwork, _
System.Net.Sockets.SocketType.Stream, System.Net.Sockets.ProtocolType.Tcp)



    Private Sub BackgroundWorkerScan_DoWork(ByVal sender As System.Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorkerScan.DoWork
        'Définition des variables du Scanner
        Dim host As String
        Dim port As Integer
        Dim BoucleScan As Integer
        Dim CompScan As Integer
        Dim ThreadProgress As System.ComponentModel.BackgroundWorker = CType(sender, System.ComponentModel.BackgroundWorker)
        Dim ThreadResult As System.ComponentModel.BackgroundWorker = CType(sender, System.ComponentModel.BackgroundWorker)

        'Définition ou incrémentation des variables pour le scanner
        host = TextBoxScanIP.Text
        port = TextBoxScanPort.Text
        TextBoxScanPort.Text = ScanPort
        CompScan = 0

        For BoucleScan = 0 To 65000
            CompScan = CompScan + 1
            ScanPort = ScanPort + 1 'ScanPort est pour le timer

            Dim hostadd As System.Net.IPAddress = System.Net.Dns.GetHostEntry(host).AddressList(0)
            Dim EPhost As New System.Net.IPEndPoint(hostadd, port)
            Try
                Scan.Connect(EPhost)
            Catch
            End Try
            ThreadProgress.ReportProgress(1)

        Next BoucleScan
    End Sub



    Private Sub BackgroundWorkerScan_ProgressChanged(ByVal sender As Object, ByVal e As System.ComponentModel.ProgressChangedEventArgs) Handles BackgroundWorkerScan.ProgressChanged
        ProgressBarMain.Value = e.ProgressPercentage / 650

        'Définition des variables du Scanner
        Dim host As String
        Dim port As Integer
        Dim CompScan As Integer

        'Définition ou incrémentation des variables pour le scanner
        host = TextBoxScanIP.Text
        port = TextBoxScanPort.Text
        TextBoxScanPort.Text = ScanPort
        CompScan = 0

        If Not Scan.Connected Then
            ListBoxScan1.Items.Add("Port " + port.ToString + " est fermé...")
        Else
            ListBoxScan1.Items.Add("Port " + port.ToString + " est ouvert !")
            ListBoxScan2.Items.Add(port.ToString)
        End If
        lblScanOpenPort.Text = "Ports ouvert : " + ListBoxScan2.Items.Count.ToString
    End Sub

Commentaire de NHenry le 14/06/2007 13:08:53 administrateur CS

Bonjour, explique moi où tu assigne Port dans ta boucle :

    For BoucleScan = 0 To 65000
            CompScan = CompScan + 1
            ScanPort = ScanPort + 1 'ScanPort est pour le timer

            Dim hostadd As System.Net.IPAddress = System.Net.Dns.GetHostEntry(host).AddressList(0)
            Dim EPhost As New System.Net.IPEndPoint(hostadd, port)
            Try
                Scan.Connect(EPhost)
            Catch
            End Try
            ThreadProgress.ReportProgress(1)

        Next BoucleScan

?

Commentaire de avatardu062 le 14/06/2007 13:42:31

For BoucleScan = 1 To 65000
            CompScan = CompScan + 1
            ScanPort = ScanPort + 1 'ScanPort est pour le timer
            port = BoucleScan

            Dim hostadd As System.Net.IPAddress = System.Net.Dns.GetHostEntry(host).AddressList(0)
            Dim EPhost As New System.Net.IPEndPoint(hostadd, port)
            Try
                Scan.Connect(EPhost)
            Catch
            End Try
            ThreadProgress.ReportProgress(1)

        Next BoucleScan

   Merci, en effet j'avais oublié d'assigner cette variable, mais il y a 2 problème, le scanner est presque aussi lent qu'avec le Timer (2 port/s), et dès qu'il trouve le premier port ouvert il recommence à speedé sans vérifier si les port sont ouvert :/
   J'avais pourtant réussi à faire un très bon scanner en VB6 (plus de 175 ports/s) mais pour l'instant je n'ai pas une assez bonne connaissance en VB.Net afin d'améliorer se scanner et à mon avis j'utilise une mauvaise méthode...
   Je me pencherai sur le problème ce soir ou demain soir et si cela ne marche pas j'essayerai de trouver une source toute faite, parfois sa fait pas de mal de copier :) afin de mieux comprendre.

   PS: Le scanner marche mais est très lent (2 a 3 ports/s)

Commentaire de Renfield le 14/06/2007 13:48:36 administrateur CS

pourquoi utiliser cette variable 'port' ? utilsies BoucleScan directement ...

65000 ?? pourquoi pas 65535 ? (ou encoremieux, parcourir entre MinPort et MaxPort

je pense que si c'est lent, c'est parce que tu instancie 65000 objets IPEndPoint
instancie en un, et utilises ses propriétés pour modifier le port, ensuite

voir la doc :
http://msdn2.microsoft.com/fr-fr/library/system.net.ipendpoint_members(VS.80).aspx

NB. prendre mes conseils avec des pincettes, je ne code pas en .Net ^^

Commentaire de NHenry le 14/06/2007 13:56:14 administrateur CS

A la place de n'utiliser qu'une seul Thread, utilises-en plusieurs.

Commentaire de fdiedler2000 le 14/06/2007 18:01:13

Marche pas cette methode pour tester les ports !

Commentaire de OneHacker le 15/06/2007 11:36:41

TOute façon t'a oublié le zip car si on doit tout refaire le projet et changer les noms c'est pas terrible.

Commentaire de avatardu062 le 15/06/2007 21:26:09

Vous avez tous raison, je vais essayer d'utiliser plusieurs thread ainsi que minport et maxport.

Commentaire de fdiedler2000 le 15/06/2007 23:46:34

Quand ton projet marchera, dis le nous mais vérifie au moins que ca marche :)

++

Commentaire de avatardu062 le 16/06/2007 18:33:57

   Mon scanner marche, mais est très lent :)

   Dans la semaine je vais refaire le code du début et surement changer de méthode de connéxion, faire une classe et/ou autre chose...

Commentaire de fdiedler2000 le 16/06/2007 19:55:30

Marche pas chez moi, il me dit que tous mes ports sont fermés alors que c'est pas possible ! Pourquoi ?

Commentaire de avatardu062 le 17/06/2007 09:15:29

   Si tu utilise le code de base de la source (sans les modifications apportés dans les commentaires) il devrait marcher, j'ai Windows Nt et je l'ai testé sur 2 autre PC que le mien (dont 1 PC portable) et cela marche. Donc si cela ne marche toujours pas chez toi, veut tu m'indiquer qu'elle version as-tu de Windows ? afin que je puisse cherchez l'erreur et/ou maximiser la compatibilité de mes programmes. Merci.

Commentaire de fdiedler2000 le 17/06/2007 11:19:39

J'ai la version win XP SP2 et ca marche pas :(

Commentaire de fdiedler2000 le 17/06/2007 11:26:35

j'ai une freebox aussi en mode routeur et j'ai ouvert quelque port pour tester et ton programme dit que tout est fermé. Le port 21 est forcement ouvert puisque je l'utilise pour le FTP...

Commentaire de avatardu062 le 17/06/2007 13:00:42

   Voila, j'ai mis en ligne la source (de base) à télécharger afin que vous puissez facilement testez la source, la modifier, la comprendre et la compiler ...
   Je n'ai pas travailler le design, je l'ai simplifier au maximum afin de faciliter la compréhension.

Commentaire de fdiedler2000 le 17/06/2007 13:05:01

Retester marche toujours pas ! Il faut mettre l'IP routeur ou la vrai pour infos ? De toute maniere avec les deux ca marche pas !

Commentaire de allthew3 le 30/06/2007 11:47:11

merci !
exactement ce que je cherchais !
(bon pour mon utilisation faut modifier des trucs mais ça fonctionne parfaitement !)
merci bien @++

Commentaire de OneHacker le 30/06/2007 13:48:00

CHez moi ca marche mais les résultats sont aberrants car j'ai réellement que 4 ou 5 ports ouverts et il m'en trouve 6 !

Je vais essayer de l'améliorer. Je te tiens au courant.

Commentaire de OneHacker le 30/06/2007 13:48:45

Désolé pour le double post mais on peut pas édité.

Il me dit que le port 80 est fermé alors que je suis sur ce site et d'autres sites.

Commentaire de fdiedler2000 le 30/06/2007 14:08:42

Chez moi aussi ca marche pas les resultats ne sont pas conformes... Exemple port 21 fermé alors que je suis connecté sur mon Ftp !

Commentaire de allthew3 le 30/06/2007 16:23:00

par contre vous seriez pas comment accéler un peu tout ça ?
multithreading oui mais où ?

merci encore pour la source très utile ^^

Commentaire de allthew3 le 30/06/2007 16:23:22

PS : 10/10 !

Commentaire de OneHacker le 30/06/2007 17:10:05

Pour le multithreading déjà j'essaye de faire du monothreading car c'est lent, ne pas passer par un timer mais une boucle dans un thread aussi je vais faire un importation de port et description(idée en regarde le programme NetBrute)

Ensuite vais essayer que le programme puisse détecter l'IP locale(pas l'IP dans le programme qui est une IP locale résau je crois)

Et l'IP FAI(dite publique).

Je vous tiens au courant.

Commentaire de hvb le 02/07/2007 00:53:40

"Commentaire de : OneHacker le 30/06/2007 13:48:45  Désolé pour le double post mais on peut pas édité.
Il me dit que le port 80 est fermé alors que je suis sur ce site et d'autres sites.
Commentaire de : fdiedler2000 le 30/06/2007 14:08:42  Chez moi aussi ca marche pas les resultats ne sont pas conformes... Exemple port 21 fermé alors que je suis connecté sur mon Ftp !"
(+ d'autres commentaires plus haut)

Heuu un port ouvert, ça sous-entend un port qui attend une connexion entrante... vous parlez de connexions sortantes là.

"Et l'IP FAI(dite publique)."
Une webrequest sur whatismyip.org, ou sur un script php qui fait un bete echo de ton host et le tour est joué.

Enfin pour le threading, c'est le temps de reponse qui est long, pas le traitement du code, donc oui, lancer 5 ou 6 connexions en même temps pourrait être un gros gain de temps.

Commentaire de hvb le 02/07/2007 00:55:47

remarque, mieux, pourquoi ne pas utiliser la méthode asynchrone BeginConnect...?

Commentaire de s5gt le 04/10/2007 17:52:22

YO ! ça a l'air bien complex tout ça.
Je suis un débutant, mon code va vous sembler bien pourave.... mais il a l'air de bien fonctionner.
Il est tres lent, vous vous occuperez du threading ( car j'y comprends encore rien )

voila:

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        'definition des variables

        Dim  i As Integer
        Dim ip As String=textbox1.text
        Dim port As Integer = 130 ' Port de départ
        

        For i = 1 To 15 ' NB de ports a scanner
            Dim s As New System.Net.Sockets.Socket(System.Net.Sockets.AddressFamily.InterNetwork, _
           System.Net.Sockets.SocketType.Stream, System.Net.Sockets.ProtocolType.Tcp)
            Try
                s.Connect(ip, port)
            Catch
            End Try
            If s.Connected Then ' si le port est ouvert
                ListBox1.Items.Add("Port N°= " & port & "  Ouvert")
                s.Close() 'Permet de reutiliser le socket / inutile en l'etat
            Else
                ListBox1.Items.Add("Port N°= " & port & "  Fermé")
                ListBox1.Refresh()
            End If
            port = port + 1
        Next
    End Sub



Commentaire de yenamarresupilami le 24/06/2009 15:46:24

Merci bien S5GT, après test, ton code fonctionne nickel, c'est exactement ce qu'il me fallait !

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

[vb.net ] Imprimante : cherche équivalence de .port en vb en vb.net [ par nakata77 ] Bonjour,Je suis en train de migrer un programme vb en vb.netLe probleme c'est que je n'arrive pas à trouver une équivalence à .port  le .port permet d [Microsoft VB.NET] Utilisation port série [ par darkj57 ] Voila mon problème est tel que j'ai créé un petit programme ( chronomètre) ainsi qu'un boîtier de commande connecté à mon ordinateur par le port de sé Contrôler un port série d’un PC en VB.Net [ par abdel1109 ] Salut, j'ai besoin d'aide à propos du contrôle d'un port série d'un PC par code VB.Net ... ce que j'essai de faire c'est :1 - connecter un « Dynamo » rs232 et vb 2005 net [ par zn415 ] Bonjour, je viens de telecharger et installer vb 2005 express et je souhaiterais utiliser le port serie rs232 pour communiquer avec un microcontroleur Port série sous vb.net [ par SEB73460 ] Bonjour à tous,Je souhaiterai envoyer le contenu d'un textbox sur mon port  "Com1"Je debute en vb.net,est-ce que quelqu'un peu me donner un bout de co port serie et vb.net [ par SEB73460 ] Bonjour et bon dimanche à tous,Voila, apres des recherches de bout de code sur code sources concernant le reception de données via le port serie j'aim VB.net erreur sur l'ouverture d'un port série [ par Carolineitw ] Bonjour,Je suis stagiaire et j'aimerais récupérer des données (position angulaire) par le port série com 1. Voici mon code (hypersimple je sais, mais port serie et modem (vb.net) [ par IhabYktn ] j'ai une application ou j'ai 2 types de connection:-connection via modem.-connection via port serie vers une PIC.et comme vous savez vb.net ne differe supervision par port parallele vb.net [ par hyacinthe11 ] je sui entrin de créer une application de supervision qui va consister à créer sous vb.net 2008 une application qui me permettra le démarrage et l'arr serialport de vb.net contre mscomm de vb6...problème vitesse [ par jeanmi45 ] Bonjour, 2 soft dialoguent entre eux via port série (ne me dites pas "utilises l'ethernet..." pas possible ici malheureusement...donc port série impos


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,513 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales