Stetige Überprüfung, ob Client noch mit Server verbunden ist [TCP]

  • VB.NET

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von Minilulatsch.

    Stetige Überprüfung, ob Client noch mit Server verbunden ist [TCP]

    Hey Leute,
    ich habe folgendes Problem. Ich versuche im Moment eine TCP Client/Server Anwendung zu schreiben (VB 2010), was auch ganz gut klappt.
    Ich bin jetzt soweit, dass der Client die Verbindung zum Server aufbauen kann und das Strings, die vom Client gesendet werden, auch auf dem Server angezeigt werden.
    Mein nächster Schritt soll jetzt sein, dass der Server durchgehend (am besten im Hintergrund) überprüft, ob der Client noch Verbunden ist und falls nicht soll er einfach in ein Label schreiben "Client hat Verbindung getrennt". Kennt ihr dazu ein Methode, die relativ einfach realisierbar ist?

    Grüße,
    Minilulatsch
    Du kannst es mit einer Art "KeepAlive" realisieren.

    Der Server sendet also zum Beispiel jede Sekunde "#alive" an alle Clienten. Dies kannst du mit "Thread.Sleep(1000)" realisieren.
    Diese antworten nun mit "#alive". Falls du das Tutorial von kevin89 benutzt hast, kannst du in die Struktur z.B. "Public DateTime keepalive" einfügen und dieses dann immer updaten. In dem KeepAlive-Thread wird anschließend noch überprüft, ob alle Clienten "keepalive" auf "now" +/- 1 Sekunde haben. Wenn nicht, werden sie gekickt.
    hey

    schreibe gerade auch an einem Server/Client projekt, hier ein teil aus meinem Quellcode habe soweit alles entfernt, wichtig ist auch nur das Try Catch.

    VB.NET-Quellcode

    1. Public Sub ListenToIncoming(ByVal connection)
    2. Do
    3. Try
    4. Dim stmp As String
    5. stmp = connection.streamr.ReadLine ' warten, bis etwas empfangen wird...
    6. Catch 'Die Verbindung wurde vom Client geschlossen
    7. ' Hier jetzt der Befehl was passieren soll wenn der Client nicht mehr verbunden ist
    8. Exit Do
    9. End Try
    10. Loop
    11. End Sub


    Da TCP eine Verbindung ohne Datenverluste ist, wird durch

    VB.NET-Quellcode

    1. stmp = connection.streamr.ReadLine
    solange gewartet bis etwas empfangen wird. Wenn der Client jetzt nicht mehr erreichbar ist, wird ein Fehler erzeugt, der durch Try Catch abgefangen werden kann und dir somit zeigen kann ob der Client noch mit dem Server kontakt hat oder nicht.

    Da es aber mehrere wege giebt eine TCP verbindung zu schreiben, weis ich nicht ob das so bei dir auch funktioniert aber probieren kannst du es :)