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

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

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.