IP-Bereich (10.13.214.) anpingen
- VB.NET
Sie verwenden einen veralteten Browser (%browser%) mit Sicherheitsschwachstellen und können nicht alle Funktionen dieser Webseite nutzen.
Hier erfahren Sie, wie einfach Sie Ihren Browser aktualisieren können.
Hier erfahren Sie, wie einfach Sie Ihren Browser aktualisieren können.
Es gibt 34 Antworten in diesem Thema. Der letzte Beitrag () ist von vb-checker.
-
-
-
-
-
-
-
AliveDevil schrieb:
25500
@B2T:
100 Bereiche mit jeweils 250 Adressen, die Threads erscheinen mir da wirklich am einfachsten. -
-
-
-
Ja kann man. Heißt aber noch lange nicht, dass die Vorgänge parallel ablaufen. Meiner Meinung nach geht das nämlich nicht (wie willst du mehrere Signale gleichzeitig über eine Leitung übertragen?). Aber ist ja eigentlich egal, so lange es von der Netzwerkkarte als pseudo-parallel dargestellt wird
Nimm 100 Threads und fertig. Zu viele Threads würde ich auch nicht benutzen wegen evtlem Overhead. Kenne mich damit aber nicht aus, also probiers einfach.Skybird schrieb:
Das sind ja Ubisoftmethoden hier !
-
Antivirus 2.0: Der perfekte Schutz gegen Malware > Weitere Informationen
Debuggen, Fehler finden und beseitigen
Updater - Worauf sollte man bei eigenen Updatern achten? -
-
Hey,
mach Dir halt die Parallel.For, bzw. Parallel.ForEach Funktionen aus dem System.Threading.Tasks Namespace zu nutze.
VB.NET-Quellcode
- Imports System.Threading.Tasks
- Imports System.Net.NetworkInformation
- Imports System.Threading
- Public Class Form1
- Private _listIPs As New List(Of String)
- Private _listReplys As New List(Of PingReply)
- Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
- Dim t As New Thread(AddressOf ExecutePings)
- t.Start()
- End Sub
- Private Sub ExecutePings()
- Parallel.ForEach(_listIPs, Sub(ip)
- Dim pReq As New Ping()
- Dim pRes As PingReply = pReq.Send(ip)
- _listReplys.Add(pRes)
- End Sub)
- End Sub
- Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
- _listIPs.Add("192.168.2.5")
- _listIPs.Add("192.168.2.7")
- _listIPs.Add("192.168.2.77")
- _listIPs.Add("192.168.2.78")
- _listIPs.Add("192.168.2.65")
- _listIPs.Add("192.168.2.11")
- End Sub
- End Class
Falls Du die Ping-Klasse aus dem System.Net.NetworkInformation Namespace nutzt: Die haben auch Async-Methoden.Die Unendlichkeit ist weit. Vor allem gegen Ende.
Manche Menschen sind gar nicht dumm. Sie haben nur Pech beim Denken. -
Danke für eure Antworten.
Da ich es nicht so ganz verstehe mit den Threads, poste ich jetzt einfach mal den Code, welchen ich bisher gemacht habe. Die Punkte bedeuten, dass da noch die ganzen pings für die IP´s dazwischen noch rein müssen.
VB.NET-Quellcode
- Option Strict On
- Imports System
- Imports System.Net
- Imports System.Net.NetworkInformation
- Public Class Form1
- Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
- Using host As New Net.NetworkInformation.Ping
- ' Abfrage Netz A
- Dim reply As PingReply = host.Send("10.13.214.1")
- If reply.Status = IPStatus.Success Then
- Label1.Text = "Netz = A"
- End If
- reply = host.Send("10.13.214.2")
- If reply.Status = IPStatus.Success Then
- Label1.Text = "Netz = A"
- End If
- reply = host.Send("10.13.214.3")
- If reply.Status = IPStatus.Success Then
- Label1.Text = "Netz = A"
- End If
- reply = host.Send("10.13.214.4")
- If reply.Status = IPStatus.Success Then
- Label1.Text = "Netz = A"
- End If
- reply = host.Send("10.13.214.5")
- If reply.Status = IPStatus.Success Then
- Label1.Text = "Netz = A"
- End If
- .
- .
- .
- reply = host.Send("10.13.214.255")
- If reply.Status = IPStatus.Success Then
- Label1.Text = "Netz = A"
- End If
- ' Abfrage Netz B
- reply = host.Send("10.14.196.1")
- If reply.Status = IPStatus.Success Then
- Label1.Text = "Netz = B"
- End If
- reply = host.Send("10.14.196.2")
- If reply.Status = IPStatus.Success Then
- Label1.Text = "Netz = B"
- End If
- reply = host.Send("10.14.196.3")
- If reply.Status = IPStatus.Success Then
- Label1.Text = "Netz = B"
- End If
- reply = host.Send("10.14.196.4")
- If reply.Status = IPStatus.Success Then
- Label1.Text = "Netz = B"
- End If
- reply = host.Send("10.14.196.5")
- If reply.Status = IPStatus.Success Then
- Label1.Text = "Netz = B"
- End If
- .
- .
- .
- reply = host.Send("10.14.196.255")
- If reply.Status = IPStatus.Success Then
- Label1.Text = "Netz = B"
- End If
- ' Abfrage Netz C
- reply = host.Send("10.15.201.1")
- If reply.Status = IPStatus.Success Then
- Label1.Text = "Netz = C"
- End If
- .
- .
- .
- End Using
- End Sub
- End Class
-
-
-
zauber777 schrieb:
immer der gleichen abfrage, nur weil sich ein paar ziffern ständig ändert
wie bereits erwähnt - "for-schleife" -> msdn.microsoft.com/de-de/library/5z06z1kb(v=vs.80).aspx -
Hey,
ich hab Dir doch oben ein Beispiel gegeben. Wenn Du mit den Threads nicht klar kommst, dann lass die halt weg, die Anwendung wird dann eben blockieren. Speicher die IPs, die Du anpingen willst, evtl. in einer Textdatei und lies diese ins Programm ein. Vorteil hier, Du musst, wenn sich etwas ändert, nicht den Programmcode ändern.
Pingen kannst Du dann in einer ForEach-Schleife, mit extra oder ohne extra Thread. Somit ist der Nudel-Code Geschichte.Die Unendlichkeit ist weit. Vor allem gegen Ende.
Manche Menschen sind gar nicht dumm. Sie haben nur Pech beim Denken. -
ok habe jetzt den code von SpaceyX genommen und schon mal mit meinen IP-Beispielen versehen.
VB.NET-Quellcode
- Imports System.Threading.Tasks
- Imports System.Net.NetworkInformation
- Imports System.Threading
- Public Class Form1
- Private _listIPs As New List(Of String)
- Private _listReplys As New List(Of PingReply)
- Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
- Dim t As New Thread(AddressOf ExecutePings)
- t.Start()
- End Sub
- Private Sub ExecutePings()
- Parallel.ForEach(_listIPs, Sub(ip)
- Dim pReq As New Ping()
- Dim pRes As PingReply = pReq.Send(ip)
- _listReplys.Add(pRes)
- End Sub)
- End Sub
- Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
- ' Abfrage Netz A
- _listIPs.Add("10.13.214.1")
- _listIPs.Add("10.13.214.7")
- _listIPs.Add("10.13.214.77")
- _listIPs.Add("10.13.214.78")
- _listIPs.Add("10.13.214.65")
- _listIPs.Add("10.13.214.11")
- ' Abfrage Netz B
- _listIPs.Add("10.14.196.1")
- _listIPs.Add("10.14.196.7")
- _listIPs.Add("10.14.196.77")
- _listIPs.Add("10.14.196.78")
- _listIPs.Add("10.14.196.65")
- _listIPs.Add("10.14.196.11")
- ' Abfrage Netz C
- _listIPs.Add("10.14.196.1")
- _listIPs.Add("10.14.196.7")
- _listIPs.Add("10.14.196.77")
- _listIPs.Add("10.14.196.78")
- _listIPs.Add("10.14.196.65")
- _listIPs.Add("10.14.196.11")
- End Sub
- End Class
Jetzt aber noch eine Frage dazu : sollte eine IP aus dem ersten Abschnitt erreichbar sein, wie bekomme ich das dann mit und kann dann damit weiter verfahren? also in meinem vorhergehenden code hatte ich dies per
gelöst. wie kann ich es nun auslesen?
damit das Programm nicht einschläft während der pings, kann ich das ganze ja auch in einen backgroundworker setzen!?
-
Ähnliche Themen
-
developsoftware - - Sonstige Problemstellungen