vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
sevAniGif - als kostenlose Vollversion auf unserer vb@rchiv CD Vol.5  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Fortgeschrittene
TCPListener TCPClient Wenn Verbindung unerwartet abbricht stürzt Server ab. 
Autor: Tommy2002
Datum: 17.04.08 22:44

Hallo,

ich bin gerade dabei eine Netzwerkanwendung zu schreiben nur hänge ich nun an dem Problem der Server und der Client verbinden sich ohne Probleme und können auch Daten untereinander austauschen. Nur der Server bringt einer Fehlermeldung wenn ein Client z.B. wegen Systemabsturz die Verbindung nicht mehr richtig beenden kann. Er gibt folgende Fehlermeldung aus:

Von der Übertragungsverbindung können keine Daten gelesen werde: Eine vorhandene Verbindung wurde vom Remotehost geschlossen. Der Fehler tritt bei dem Befehl
i = stream.Read(bytes, 0, bytes.Length)
auf.

Der Quellecode vom Server lautet:

Imports System.Net
Imports System.Net.Sockets
Imports System.IO
Imports System.Threading
 
 
Module tcp_server
    Public Delegate Sub ParameterizedThreadStart(ByVal RecieveData)
    Public server
    Public client(0) As TcpClient
 
    Public Sub Main()
        Try
 
            'Port wird festgelegt
            Dim port As Int32 = 1335
            'Locale Adressse wir festgelegt
            Dim localAddr As IPAddress = IPAddress.Parse("127.0.0.1")
            'der Port auf der Adresse wird abgehört
            server = New TcpListener(port)
            ' Start abhörung des Ports
            server.Start()
            ' Enter the listening loop.
            While True
                Form1.TextBox1.Text = "Warten auf Verbindungen"
                'Verbindung vom Cliebt Akzeptieren
                client(socket_index) = server.AcceptTcpClient()
                If client(socket_index).Connected Then
                    MessageBox.Show("Client hat sich verbunden")
                    Dim newThread As New Thread(AddressOf _
                      tcp_server.RecieveData)
                    newThread.Start(client(socket_index))
                    Form1.TextBox1.Text = "Thread gestartet" & vbCrLf & _
                      Form1.TextBox1.Text
                    socket_index = socket_index + 1
                    ReDim Preserve client(socket_index)
                End If
 
            End While
        Catch e As SocketException
            MessageBox.Show("SocketException: " & e.Message)
        Finally
            server.Stop()
        End Try
        MessageBox.Show(ControlChars.Cr + "Hit enter to continue....")
    End Sub
 
    Private Sub RecieveData(ByVal Socket As Object)
        While True
            If Socket.connected Then
                Dim stream As NetworkStream
                ' Empfange Daten von Client
                stream = Socket.GetStream()
                ' Übertragungsgröße festlegen
                Dim bytes(1024) As Byte
                Dim data As String = Nothing
                Dim i As Int32
 
                   Do
                        If stream.CanRead Then
                            i = stream.Read(bytes, 0, bytes.Length)
                            ' Translate data bytes to a ASCII string.
                            data = System.Text.Encoding.ASCII.GetString(bytes, _
                              0, i)
                            ' Process the data sent by the client.
                            data = data.ToUpper()
                            Dim msg As Byte() = _
                              System.Text.Encoding.ASCII.GetBytes(data)
 
                            ' Send back a response.
                            stream.Write(msg, 0, msg.Length)
                            MessageBox.Show("Sent: " & data)
                        Else
                            MessageBox.Show("Kann nicht vom Netzwerkstream" & _
                              "lesen")
                            stream.Close()
                            Socket.Close()
                            Return
                        End If
                    Loop While stream.DataAvailable
            End If
        End While
    End Sub
 
End Module
Wäre nett wenn mir jemmand erklären könnte wie ich diese Fehlermeldung verhindern kann. Kann ich vielleicht irgendwie überprüfen ob die verbindung noch besteht?

Gruß

Tommy2002
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
TCPListener TCPClient Wenn Verbindung unerwartet abbricht st...4.593Tommy200217.04.08 22:44
Re: TCPListener TCPClient Wenn Verbindung unerwartet abbrich...1.636Melkor18.04.08 14:34

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel