سلام به همه دوستان
من میخوام یک رنج در فرم قرار بدم که وقتی کاربر روی دکمه کلیک کرد چک کنه و آی پی هایی که آنلاین هستند در ستون وضعیت OK و اگر نیستند NO نمایش بده . من با کد زیر مشکلم را حل کردم و در واقع برنامه Ping آی پی ها را میگیره و هرکدوم پینگ داشت OK می نویسه ولی مشکل من اینجاست که هر سیتمی که آنلاین نیست 5 ثانیه بیشتر زمان می بره و در شبکه من که حدود 170 کاربر هست اگه 100 تا آنلاین نباشند چیزی حدود 1.5 دقیقه طول میکشه که زمان زیادی هست . آیا روش دیگری هست که زودتر بشه چک و نتیجه نمایش داده شود . با سپاس فراوان از شما
Protected Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
Dim PingTable As New DataTable
PingTable.Columns.Add("IP_Address")
PingTable.Columns.Add("Status")
Dim i As Integer
Dim j As Integer = 0
Dim row_total As Integer = 20
For i = 1 To row_total
Dim PingRow As DataRow = PingTable.NewRow()
PingRow(0) = "192.168.88." & i + j
Scan(PingRow(0), PingRow(1))
PingTable.Rows.InsertAt(PingRow, PingTable.Rows.Count)
Next
GridView1.DataSource = PingTable
GridView1.DataBind()
End Sub
Sub Scan(ByVal IP, ByRef Status)
Dim strComputer As String = IP
Dim objShell = CreateObject("WScript.Shell")
Dim objScriptExec = objShell.Exec("ping -n 1 -w 100 " & strComputer)
Dim strPingResults = LCase(objScriptExec.StdOut.ReadAll)
If InStr(strPingResults, "reply from") Then
Status = "OK"
Else
Status = "NO"
End If
End Sub