TcpClient - Automatischer Reconnect

  • VB.NET
  • .NET (FX) 3.0–3.5

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

    TcpClient - Automatischer Reconnect

    Hallo,

    mein TcpClient soll in regelmäßigen Abständen überprüfen, ob der Server erreichbar ist, wenn eine Verbindung nicht aufgebaut werden konnte.
    So sieht das momentan aus:

    VB.NET-Quellcode

    1. Public Sub TryConnect()
    2. Dim locClient As New TcpClient()
    3. Try
    4. locClient.Connect(IPAddress.Parse(AIp), APort)
    5. If locClient.Connected Then
    6. Console.WriteLine("[" & DateTime.Now & "] " & "TCP client connection established")
    7. Console.WriteLine(New String("-", 40))
    8. Console.WriteLine()
    9. End If
    10. Catch ex As SocketException
    11. Console.WriteLine("[" & DateTime.Now & "] " & "Failed to connect")
    12. locClient.Close()
    13. '// Reconnect every 5 seconds
    14. Thread.Sleep(5000)
    15. TryConnect()
    16. End Try
    17. End Sub


    Allerdings erhalte ich nach geraumer Zeit eine StackOverflowException. Gibt es keine Möglichkeit die Erreichbarkeit des Servers zu testen ohne gleich eine SocketException auszulösen?

    Danke
    Naja, bei deinem Versuch ruft die Methode sich immer wieder selbst auf, was bei ausreichend Fehlversuchen eben zu dem StackOverflow führt.

    Machs doch einfach in einer While-Schleife, aus der du im Fall des erfolgreichen Verbindungsaufbaus einfach mit Return ausbrichst.

    VB.NET-Quellcode

    1. Do
    2. Try
    3. If locClient.Connected Then
    4. '...
    5. Return
    6. End If
    7. Catch ex As SocketException
    8. '...
    9. End Try
    10. While True
    Weltherrschaft erlangen: 1%
    Ist dein Problem erledigt? -> Dann markiere das Thema bitte entsprechend.
    Waren Beiträge dieser Diskussion dabei hilfreich? -> Dann klick dort jeweils auf den Hilfreich-Button.
    Danke.