none
TCP Verbindung Abbruch erkennen und Verbindung wieder neu aufbauen RRS feed

  • Frage

  • Hallo, ich stelle in einem Task eine TCP Verbindung her.
    Klappt soweit alles gut, nur kann es passieren das die Verbindung abbricht, oder der ganze TCP Server nicht mehr erreichbar ist (PC ist aus ! ) 
    Wie kann ich prüfen ob die Verbindung noch besteht, ob der Server erreichbar ist, und wie baue ich die Verbindung hier im Task wieder auf, wenn der PC wieder erreichbar ist ?


    Try

                Using client As New TcpClient()

                    Dim bytes As Byte() = New Byte(255) {}
                    Dim data As String
                    Dim i As Integer

                    client.Connect(IPAddress.Parse(Item.IP), Item.Port)



                        While True 
                            Using stream As NetworkStream = client.GetStream()


                                i = stream.Read(bytes, 0, bytes.Length)

                                While i <> 0

                                    data = Encoding.ASCII.GetString(bytes, 0, i)

                                    _dataCache.AppendNewData(data)

                                    Thread.Sleep(RetrialDelay)

                                    i = stream.Read(bytes, 0, bytes.Length)

                                End While

                            End Using
                        End While
                    End If

                End Using

            Catch ex As Exception


            End Try

                                                   



    Ich habe ja hier in der Schleife ja nur die Möglichkeit was abzufragen wenn der Server was schickt, oder?

      While i <> 0

                                    data = Encoding.ASCII.GetString(bytes, 0, i)

                                    _dataCache.AppendNewData(data)

                                    Thread.Sleep(RetrialDelay)

                                    i = stream.Read(bytes, 0, bytes.Length)

                                End While       
    Donnerstag, 23. Juni 2022 07:21

Antworten

  • Hallo Thomas,

    Die Poll-Methode und die Available-Eigenschaft der Socket-Klasse können als Grundlage für die Implementiereung eines sogenannten Herzschlagmechanismus (Heartbeat Mechanism) dienen. Wenn die Poll-Methode eine ObjectDisposedException hervorruft, deutet dies auf einen geschlossenen Socket hin. Codebeispiele findest Du im ersten Artikel sowie in diesem Thread:
    How to check the connection state of a TCP Server (Socket) with TCP Client in VB.NET

    Gruß,
    Dimitar


    Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip „IT-Pros helfen IT-Pros“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.

    Donnerstag, 23. Juni 2022 17:36
    Moderator