TCP Status-Abfrage in Schleife

Outsider77

Erfahrenes Mitglied
Hallo!
Bei uns im Firmennetzwerk hängt ein PC, auf den mehrere Leute regelmäßig zugreifen müssen. Dies geschiet über Remote Desktop Verbindung. Um zu verhindern, dass einer den anderen rauswirft, wollte ich ein kleines Programm schreiben, welches checkt, ob einer der Leute gerade connected ist und wenn ja, die Möglichkeit für die anderen unterbindet. Bei einer bestehenden Verbindung wird ein Wert in eine .txt-Datei geschrieben, die dann wiederrum von einem anderen Programm ausgelesen wird. Es ist auch soweit fertig, allerdings besteht noch ein kleines Problem. Der Status und die ClientIP werden nur einmal ausgelesen und die Werte bleiben dann bestehen.
Code:
Imports System.Net.NetworkInformation

Public Class Form1

    Public Shared Sub GetTcpConnections()
        Dim properties As IPGlobalProperties = IPGlobalProperties.GetIPGlobalProperties()
        Dim connections As TcpConnectionInformation() = properties.GetActiveTcpConnections()
        Dim t As TcpConnectionInformation

        For Each t In connections
            Dim ClientIP As String = t.RemoteEndPoint.ToString
            Dim status As String

            status = t.State

            'hier folgen alle IP's, die Zugriff haben
            If ClientIP = "" Or ClientIP = "" Then
                My.Computer.FileSystem.WriteAllText("G:\stats.txt", "Verbindung aktiv", True)
            Else
                My.Computer.FileSystem.WriteAllText("G:\stats.txt", "Verbindung inaktiv", True)
            End If
        Next t
    End Sub

End Class
Dann habe ich mir noch einen Timer gebastelt, der diese Abfrage aller 15 Sekunden wiederholt.

Code:
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
        Dim interval As Integer = 15000
        Timer1.Interval = interval
        Timer1.Start()
        Call GetTcpConnections()
    End Sub

Zum Testen des Programmes schreibt er mir in ein paar Labels den Status, die ClientIP und den fortlaufenden Timer.
Wie bekomme ich es hin, dass bei jedem Durchlauf die Werte neu ausgelesen werden. Denn momentan steht in der txt immer nur "Verbindung aktiv" (bzw in den Labels immer die selbe IP und der selbe Status), auch wenn gar keine der definierten IP's connected ist.
Danke schonmal vorab!
Gruß Outi
 
Zuletzt bearbeitet:
Hat niemand eine Idee?
Vielleicht gibt es ja auch eine einfachere Lösung?
 
Zuletzt bearbeitet:
OK, wir haben die Lösung selber gefunden.
Man muß die oben beschriebene TCP-Abfrage
aus einer anderen Form o.ä. heraus aufrufen.

Die Form, wo die Abfrage abläuft, muß nach der Abfrage geschlossen und
für die nächste Abfrage wieder geöffnet / aufgerufen werden.
Ansonsten werden die ermittelten Daten
(RemoteEndPoint, LocalEndPoint und State) nicht neu gesetzt.

So funktioniert es zumindest jetzt!
 

Neue Beiträge

Zurück