1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100
|
Imports System.Net
Imports System.Net.Dns
Imports System.Threading
Public Class DnsTask
Private Host_Name As String
Private Host_IP As String
Private ResultLvi As ListViewItem
Private DnsResult As String
Private ReverseDnsResult As String
Public Sub New(ByVal hostname As String, ByVal ip As String, ByVal lvi As ListViewItem)
Host_Name = hostname
Host_IP = ip
Me.ResultLvi = lvi
End Sub
' Sub qui exécute le traitement dans un thread du ThreadPool
Friend Sub ResolveDNS(ByVal param As Object)
Dim task As DnsTask = CType(param, DnsTask)
'Dim Th_DNS = New Thread_DNS_Class(Host_Name, Host_IP)
DnsResult = DNS_Resolution_Result()
ReverseDnsResult = DNS_Reverse_Result()
Dim dlg As SetResultDelegate = New SetResultDelegate(AddressOf SetResult)
Main.Invoke(dlg, task)
End Sub
' Delegué pour afficher le résultat dans le thread principal via Invoke
Delegate Sub SetResultDelegate(ByVal task As DnsTask)
' Affichage du résultat (s'exécute dans le thread principal grâce à Invoke)
Private Sub SetResult(ByVal task As DnsTask)
ResultLvi.SubItems(3).Text = DnsResult
Select Case task.DnsResult
Case "Resolved"
ResultLvi.SubItems(3).ForeColor = Color.Green
Case "Not Resolved"
ResultLvi.SubItems(3).ForeColor = Color.Red
Case Else
End Select
ResultLvi.SubItems(4).Text = ReverseDnsResult
Select Case ReverseDnsResult
Case "Resolved"
ResultLvi.SubItems(4).ForeColor = Color.Green
Case "Not Resolved"
ResultLvi.SubItems(4).ForeColor = Color.Red
Case Else
End Select
End Sub
Private Function DNS_Resolution_Result()
Dim Result_Resolution As String
Dim State_Resolution As String
Try
Result_Resolution = New IPAddress(GetHostByName(Host_Name).AddressList(0).Address).ToString
Catch ex As Exception
Result_Resolution = ""
End Try
If Host_Name = "" Then
State_Resolution = "Not Possible"
End If
If Result_Resolution <> "" And Result_Resolution = Host_IP Then
State_Resolution = "Resolved"
ElseIf Result_Resolution = "" Then
State_Resolution = "Not Resolved"
ElseIf Result_Resolution <> Host_IP Then
State_Resolution = "Not Mached"
End If
Return State_Resolution
End Function
Private Function DNS_Reverse_Result()
Dim Result_Reverse As String
Dim State_Reverse As String
Try
Result_Reverse = Resolve(Host_IP).HostName
Catch ex As Exception
Result_Reverse = ""
End Try
If Host_IP = "" Then
State_Reverse = "Not Possible"
End If
If Result_Reverse <> "" And Result_Reverse = Host_Name Then
State_Reverse = "Resolved"
ElseIf Result_Reverse = "" Then
State_Reverse = "Not Resolved"
ElseIf Result_Reverse <> Host_IP Then
State_Reverse = "Not Mached"
End If
Return State_Reverse
End Function
End Class |