TCPClient/TCPServer - trennen der Verbindung erkennen ?

  • VB.NET

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von ThinkPad.

    TCPClient/TCPServer - trennen der Verbindung erkennen ?

    Nabend,

    ich habe einen TCPListener und einen TCPClient. Wenn ich den TCPClient schliesse mit .Close() wird dies nicht vom TCPListener erkannt.
    Rufe ich also die Property .Connected ab ist diese immer noch auf True gesetzt.

    Welche Möglichkeit ist denn Empfehlenswert um auf beiden Seiten zu erkennen ob ein Socket geschlossen wurde ?
    wie sieht dein Code aus?
    wie schließt du das ganze?
    durch .Close wird nur das Objekt "gelöscht" und nicht mehr Zugreifbar gemacht, die Verbindung bleibt weiterhin bestehen, erst durch das Schließen des Streams wird die Verbindung richtig beendet ;)
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---
    Nach schliessen des Streams wird "Connected" immer noch nicht auf false gesetzt. Es werden sogar Daten an die Gegenstelle geschickt. Dort kann ich jetzt nur prüfen ob leeren Daten angekommen sind und daraufhin die Verbindung trennen.

    Was aber ziemlich blöd ist da ich nicht immer gleich die Verbindung schliessen möchte wenn ein "leeres" Bytearray ankommt ;)

    Gibts da ne andere bessere Möglichkeit ?



    Listener:

    VB.NET-Quellcode

    1. While True
    2. Me.Cloc_ReceivingStream = Me.Cloc_ClientSocket.GetStream()Me.Cloc_ReceivedByteLength = Me.Cloc_ReceivingStream.Read(Me.Cloc_ReceivedByte, 0, CInt(Me.Cloc_ClientSocket.ReceiveBufferSize))
    3. If Me.Cloc_ReceivedByteLength > 0 Then
    4. RaiseEvent Ev_Thread_ClientDataReceived(Me.Cloc_ClientId, Me.Cloc_ReceivedByte, Me.Cloc_ReceivedByteLength)
    5. Else
    6. Me.Cloc_ReceivingStream.Close()
    7. Me.Cloc_ClientSocket.Close()Exit While
    8. End If
    9. End While