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
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.