Permet de teste si les ports d'un pc son ouvert winsock

Soyez le premier à donner votre avis sur cette source.

Snippet vu 25 427 fois - Téléchargée 32 fois

Contenu du snippet

C'est une petite classe très simple à comprendre puisque j'ai réussi à la faire. Elle permet de scanner les ports d'un périphérique et dans retourner l'etat. Je n'arrive par contre pas à scanner les ports UDP alors si une personne trouve la solution, merci de me le faire savoir.

Source / Exemple :


Les imports :

Imports System.Net.Sockets.Socket

La source :

Public Class Scanner

#Region "Attributs"
        ' Attributs
        Private _strHost As String
        Private _iPort As Integer
        Private _strProtocol As String
        Private _blEtat As Boolean
#End Region

#Region "Propriétés"
        ' Proptiété de Host, permet de définir ou de lire l'adresse IP du PC à tester
        Public Property Host()
            Get
                Host = _strHost
            End Get
            Set(ByVal Value)
                _strHost = Value
            End Set
        End Property
        ' Propriété de Port, permet de définir ou de lire le port du PC à tester
        Public Property Port()
            Get
                Port = _iPort
            End Get
            Set(ByVal Value)
                _iPort = Value
            End Set
        End Property
        ' Propriété de Protocol, permet de définir ou de lire le protocol du PC à tester
        Public Property Protocol()
            Get
                Port = _strProtocol
            End Get
            Set(ByVal Value)
                _strProtocol = Value
            End Set
        End Property
        ' Propriété Etat, permet de lire l'état de la connection
        Public ReadOnly Property Etat()
            Get
                Etat = _blEtat
            End Get
        End Property
#End Region

#Region "Méthode principal"
        ' Méthode qui permet de tester si un port est ouvert ou fermé
        Public Sub TestPort()
            _blEtat = True
            ' Instanciation d'une plage d'IP d'une seule valeur
            Dim PlageIP As System.Net.IPAddress = System.Net.Dns.Resolve(Host).AddressList(0)
            Dim HostetPort As New System.Net.IPEndPoint(PlageIP, Port)
            ' Test quel type de port est sélectionné
            If _strProtocol = "Tcp" Then ' Si c'est Tcp alors on défini un Socket Tcp
                Dim LeSocket1 As New System.Net.Sockets.Socket(System.Net.Sockets.AddressFamily.InterNetwork, System.Net.Sockets.SocketType.Stream, System.Net.Sockets.ProtocolType.Tcp)
                Try
                    LeSocket1.Connect(HostetPort)
                    If Not LeSocket1.Connected Then ' Test si le socket est connecté donc si il y a un connection au port
                        ' Si le port est fermé
                        _blEtat = False
                        Return
                    Else
                        ' Si le port est ouvert
                        _blEtat = True
                        Return
                    End If
                Catch
                    ' Si la connection retourne une erreur. Intérprété comme port fermé ou périphérique injoignable
                    _blEtat = False
                    Return
                End Try
            Else 'Sinon on définit un Socket Udp
                Dim LeSocket2 As New System.Net.Sockets.Socket(System.Net.Sockets.AddressFamily.InterNetwork, System.Net.Sockets.SocketType.Stream, System.Net.Sockets.ProtocolType.Udp)
                Try
                    LeSocket2.Connect(HostetPort)
                    If Not LeSocket2.Connected Then ' Test si le socket est connecté donc si il y a un connection au port
                        ' Si le port est fermé
                        _blEtat = False
                        Return
                    Else
                        ' Si le port est ouvert
                        _blEtat = True
                        Return
                    End If
                Catch
                    ' Si la connection retourne une erreur. Intérprété comme port fermé ou périphérique injoignable
                    _blEtat = False
                    Return
                End Try
            End If
        End Sub
#End Region

    End Class

A voir également

Ajouter un commentaire Commentaires
Utilisateur anonyme
Merci beaucoup, je vais essayer
Messages postés
292
Date d'inscription
mercredi 25 octobre 2006
Statut
Membre
Dernière intervention
27 novembre 2009

Lu,
pour l'udp c'est pas un type raw mais un type DGRAM

Dim LeSocket2 As New System.Net.Sockets.Socket(System.Net.Sockets.AddressFamily.InterNetwork, System.Net.Sockets.SocketType.Dgram, System.Net.Sockets.ProtocolType.Udp)

c'est comme ca que je procede en vb6
Utilisateur anonyme
Ji ai pensé... Ca na rien changé
Messages postés
34
Date d'inscription
lundi 6 janvier 2003
Statut
Membre
Dernière intervention
29 mars 2008

pour ce qui est de l'UDP, il faut initialiser le socket comme sa :

Dim LeSocket2 As New System.Net.Sockets.Socket(System.Net.Sockets.AddressFamily.InterNetwork, System.Net.Sockets.SocketType.Raw, System.Net.Sockets.ProtocolType.Udp)

Pour le reste je sais pas encore
Messages postés
46
Date d'inscription
vendredi 21 janvier 2005
Statut
Membre
Dernière intervention
6 novembre 2005

Comment marche cette source ?
Car elle me semble excellente mais je ne sais pas comment parametrer.

merci de vos reponses
Afficher les 9 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.