vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Blitzschnelles Erstellen von grafischen Diagrammen!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
Instanzen, 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
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Instanzen, Subs und Variablen/Netzwerkteilnehmer finden 22.869Maas02.07.08 08:34
Re: Instanzen, Subs und Variablen/Netzwerkteilnehmer finden ...2.062GhostRE02.07.08 09:41
Re: Instanzen, Subs und Variablen/Netzwerkteilnehmer finden ...2.054Snoopy02.07.08 09:54
Re: Instanzen, Subs und Variablen/Netzwerkteilnehmer finden ...1.926Maas02.07.08 10:46
Re: Instanzen, Subs und Variablen/Netzwerkteilnehmer finden ...1.811Maas04.07.08 10:02
Re: Instanzen, Subs und Variablen/Netzwerkteilnehmer finden ...1.852Snoopy04.07.08 10:36
Re: Instanzen, Subs und Variablen/Netzwerkteilnehmer finden ...1.840Maas04.07.08 10:03
Re: Instanzen, Subs und Variablen/Netzwerkteilnehmer finden ...1.874Maas04.07.08 10:05
Re: Instanzen, Subs und Variablen/Netzwerkteilnehmer finden ...3.791Maas04.11.09 16:31
Re: Instanzen, Subs und Variablen/Netzwerkteilnehmer finden ...1.912ModeratorDaveS04.11.09 17:29
Re: Instanzen, Subs und Variablen/Netzwerkteilnehmer finden ...1.985FlyingEagleLW04.07.08 10:51
Re: Instanzen, Subs und Variablen/Netzwerkteilnehmer finden ...1.879Maas04.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

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

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