| |

VB.NET - Ein- und UmsteigerInstanzen, Subs und Variablen/Netzwerkteilnehmer finden 2 | |  | Autor: Maas | Datum: 02.07.08 08:34 |
| Hallo Leute,
Durch den Tipp von FlyingEagleLW, mir mal den Befehl ping.async anzusehen, habe ich das Programm nun umgeschrieben. (--> Netzwerkteilnehmer finden)
Jede Instanz durchsucht nun jeweils ein Netzwerk parallel.
Das Ganze sieht jetzt so aus:
Imports System.Net
Imports System.Net.NetworkInformation
Public Class IPTest
Private WithEvents mPing As New Ping
Private mTimeOut As Integer = 200
Private mIPNetAddress As String
Private mNetwork As Integer
Private mWeiter As Boolean
' Eigenschaft Network bestimmt den Netzwerkbereich
Public Property Network() As Integer
Get
Return mNetwork
End Get
Set(ByVal value As Integer)
mIPNetAddress = "192.168." & value & "."
mNetwork = value
End Set
End Property
'Gibt den kompletten Netzwerknamen aus
Public ReadOnly Property IPNetAddress() As String
Get
Return mIPNetAddress
End Get
End Property
'Standardkonstruktor
Public Sub New()
mIPNetAddress = "192.168.1."
mNetwork = 1
End Sub
'Überladener Konstruktor
Public Sub New(ByVal network As Integer)
mIPNetAddress = "192.168." & network & "."
mNetwork = network
End Sub
Public Sub Main()
For n As Integer = 1 To 255
mWeiter = False
mPing.SendAsync(mIPNetAddress & n, mTimeOut)
'Schleife zum Pausieren
While (mWeiter = False)
End While
Next n
End Sub
'Eventhandler bestimmt die Textausgabe und soll beim Auslösen die
' While-Schleife von Sub-Main mit Hilfe von mWeiter beenden
Private Sub PingComplete(ByVal sender As Object, ByVal e As _
System.Net.NetworkInformation.PingCompletedEventArgs) Handles _
mPing.PingCompleted
Dim sStatus As PingReply = e.Reply
mWeiter = True
If sStatus.Status = IPStatus.Success Then
Console.WriteLine("IP: " & sStatus.Address.ToString)
Console.WriteLine("Verzögerung: " & sStatus.RoundtripTime & "ms" & _
vbCrLf)
ElseIf sStatus.Status = IPStatus.TimedOut Then
Console.WriteLine("Timeout für " & sStatus.Address.ToString)
End If
End Sub
End Class
Module Module1
Sub Main()
Dim test1 As New IPTest(1)
test1.Main()
End Sub
End Module Dadurch sind nun aber zwei neue Problem (für mich) aufgetaucht.
Der Vorteil von ping.async ist zwar, dass ich nun mehrere Pingtests gleichzeitig machen kann, aber nur in verschiedenen Instanzen(so wie ich das verstanden habe). Das heißt ich muss innerhalb einer Instanz verhindern, dass ping.async aufgerufen wird, während eine andere ping.async in der gleichen Instanz läuft. Das bedeutet letztendlich, dass ich die Schleife in Sub-Main unterbrechen muss bis der Eventhandler aufgerufen wird, also ping.async beendet wurde.
Dabei gibt es das erste Problem. Ich wollte das Ganze über eine Variable steuern(mWeiter), aber so wie ich das mitbekommen habe, gelten die modulglobalen Variablen (z.B. mWeiter) in Abhängigkeit zur Instanz nur für die Properties lesend und schreibend, allerdings für die Subs nur lesend. Die Schlussfolgerung ziehe ich daraus, dass mWeiter in Abhängigkeit zu test1 durch den Eventhandler nicht verändert wurde(mWeiter=True). Das Programm ist in der While-Schleife gefangen.
Wie kann ich von einer Sub-Prozedur in der Klasse aus auf eine mVariable in Abhängikeit zu der Instanz(!) zugreifen und sie verändern?
Das zweite Problem ist eigentlich keins, wenn das erste gelöst würde, denn es geht um das Gleiche. Ich hab mir überlegt, dass ich das Programm ja auch für 0,2s anhalten könnte bis spätestens der Timeout erreicht wurde, was ja meistens der Fall ist.
Wie kann man ein Programm auf bestimmte Zeit pausieren lassen?
Obwohl das zweite Problem wohl die einfachere Lösung wäre, bin ich mehr am ersten Problem interessiert, weil ich mich erst seit ein paar Tagen mit Objektorientierung beschäftige (und vielleicht 6 Monate VBA Erfahrung habe) und noch eine Menge lernen will.
Schonmal Danke im Voraus
Maas |  |
 Instanzen, Subs und Variablen/Netzwerkteilnehmer finden 2 | 2.869 | Maas | 02.07.08 08:34 |   Re: Instanzen, Subs und Variablen/Netzwerkteilnehmer finden ... | 2.062 | GhostRE | 02.07.08 09:41 |    Re: Instanzen, Subs und Variablen/Netzwerkteilnehmer finden ... | 2.054 | Snoopy | 02.07.08 09:54 |   Re: Instanzen, Subs und Variablen/Netzwerkteilnehmer finden ... | 1.926 | Maas | 02.07.08 10:46 |   Re: Instanzen, Subs und Variablen/Netzwerkteilnehmer finden ... | 1.811 | Maas | 04.07.08 10:02 |    Re: Instanzen, Subs und Variablen/Netzwerkteilnehmer finden ... | 1.852 | Snoopy | 04.07.08 10:36 |   Re: Instanzen, Subs und Variablen/Netzwerkteilnehmer finden ... | 1.840 | Maas | 04.07.08 10:03 |   Re: Instanzen, Subs und Variablen/Netzwerkteilnehmer finden ... | 1.874 | Maas | 04.07.08 10:05 |    Re: Instanzen, Subs und Variablen/Netzwerkteilnehmer finden ... | 3.791 | Maas | 04.11.09 16:31 |     Re: Instanzen, Subs und Variablen/Netzwerkteilnehmer finden ... | 1.912 | DaveS | 04.11.09 17:29 |   Re: Instanzen, Subs und Variablen/Netzwerkteilnehmer finden ... | 1.985 | FlyingEagleLW | 04.07.08 10:51 |   Re: Instanzen, Subs und Variablen/Netzwerkteilnehmer finden ... | 1.879 | Maas | 04.07.08 21:16 |
 | Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
  |
|
sevISDN 1.0 
Überwachung aller eingehender Anrufe!
Die DLL erkennt alle über die CAPI-Schnittstelle eingehenden Anrufe und teilt Ihnen sogar mit, aus welchem Ortsbereich der Anruf stammt. Weitere Highlights: Online-Rufident, Erkennung der Anrufbehandlung u.v.m. Weitere InfosTipp des Monats Neu! sevCommand 4.0 
Professionelle Schaltflächen im modernen Design!
Mit nur wenigen Mausklicks statten auch Sie Ihre Anwendungen ab sofort mit grafischen Schaltflächen im modernen Look & Feel aus (WinXP, Office, Vista oder auch Windows 8), inkl. große Symbolbibliothek. Weitere Infos
|
|
|
Copyright ©2000-2025 vb@rchiv Dieter Otter Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.
Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel
|
|