vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Mails senden, abrufen und decodieren - ganz easy ;-)  
 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 - Ein- und Umsteiger
Chat Server Problem beim trennen der Verbindung 
Autor: Th3raser
Datum: 18.12.08 14:25

Hallo

Ich habe mich im Web etwas umgeschaut und habe einen Chat Server für Vb gefunden , dieser funktioniert für meine zwecke ganz gut nur ein kleiner Fehler stört mich ...
Und zwar das wenn eine Verbindung vom Client zum Server unterbrochen wird , egal wie ob nun durch das schließen des Clients oder durch Verlust der Internetverbindung beim Client der ChatServer Crasht.
Kann man das irgendwie verhindern das der Chat Server einfach weiterläuft und nur ausgibt das eine Person denn Chat verlassen hat , währe echt toll wenn man da jemand weiterhalfen kann
Hier der Code(Über jede Verbesserung bin ich dankbar ...)

Module Module1
    Dim clientsList As New Hashtable
    Dim counter As Integer
    Sub Main()
 
        Try
            Dim serverSocket As New TcpListener(14531)
            Dim clientSocket As TcpClient
            Dim counter As Integer
 
            serverSocket.Start()
            msg("Started ....")
            counter = 0
 
            While (True)
                counter += 1
                clientSocket = serverSocket.AcceptTcpClient()
 
                Dim bytesFrom(10024) As Byte
                Dim dataFromClient As String
 
                Dim networkStream As NetworkStream = _
                clientSocket.GetStream()
                networkStream.Read(bytesFrom, 0, CInt( _
                  clientSocket.ReceiveBufferSize))
                dataFromClient = System.Text.Encoding.ASCII.GetString(bytesFrom)
                dataFromClient = _
                dataFromClient.Substring(0, dataFromClient.IndexOf("$"))
clientsList(dataFromClient) = clientSocket
broadcast(dataFromClient + "", dataFromClient, False)
msg(dataFromClient + "")
Dim client As New handleClinet
client.startClient(clientSocket, dataFromClient, clientsList)
End While
clientSocket.Close()
serverSocket.Stop()
msg("exit")
Console.ReadLine()
Catch ex As Exception
End Try
        End Sub
 
    Sub msg(ByVal mesg As String)
        Try
            mesg.Trim()
            Console.WriteLine(" : " + mesg)
        Catch ex As Exception
 
        End Try
 
    End Sub
    Private Sub broadcast(ByVal msg As String, _
    ByVal uName As String, ByVal flag As Boolean)
        Try
            Dim Item As DictionaryEntry
            For Each Item In clientsList
                Dim broadcastSocket As TcpClient
                broadcastSocket = CType(Item.Value, TcpClient)
                Dim broadcastStream As NetworkStream = _
                        broadcastSocket.GetStream()
                Dim broadcastBytes As [Byte]()
 
                If flag = True Then
                    broadcastBytes = Encoding.ASCII.GetBytes(uName + ": " + msg)
                Else
                    broadcastBytes = Encoding.ASCII.GetBytes(msg)
                End If
 
                broadcastStream.Write(broadcastBytes, 0, broadcastBytes.Length)
                broadcastStream.Flush()
            Next
        Catch ex As Exception
 
        End Try
 
    End Sub
 
    Public Class handleClinet
        Dim clientSocket As TcpClient
        Dim clNo As String
        Dim clientsList As Hashtable
 
        Public Sub startClient(ByVal inClientSocket As TcpClient, _
        ByVal clineNo As String, ByVal cList As Hashtable)
            Try
                Me.clientSocket = inClientSocket
                Me.clNo = clineNo
                Me.clientsList = cList
                Dim ctThread As Threading.Thread = New Threading.Thread( _
                  AddressOf doChat)
                ctThread.Start()
            Catch ex As Exception
 
            End Try
 
        End Sub
 
        Private Sub doChat()
            'Dim infiniteCounter As Integer
            Dim requestCount As Integer
            Dim bytesFrom(10024) As Byte
            Dim dataFromClient As String
            Dim sendBytes As [Byte]()
            Dim serverResponse As String
            Dim rCount As String
            requestCount = 0
 
            While (True)
                Try
                    requestCount = requestCount + 1
                    Dim networkStream As NetworkStream = _
                            clientSocket.GetStream()
                    networkStream.Read(bytesFrom, 0, CInt( _
                      clientSocket.ReceiveBufferSize))
                    dataFromClient = System.Text.Encoding.ASCII.GetString( _
                    bytesFrom)
                    dataFromClient = _
            dataFromClient.Substring(0, dataFromClient.IndexOf("$"))
                    msg("From client - " + clNo + " : " + dataFromClient)
                    rCount = Convert.ToString(requestCount)
 
                    broadcast(dataFromClient, clNo, True)
                Catch ex As Exception
                    MsgBox(ex.Message)
                End Try
 
            End While
        End Sub
 
    End Class
End Module
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Chat Server Problem beim trennen der Verbindung1.182Th3raser18.12.08 14:25
Re: Chat Server Problem beim trennen der Verbindung693ModeratorDaveS19.12.08 10:05
Re: Chat Server Problem beim trennen der Verbindung772Th3raser19.12.08 11:57
Re: Chat Server Problem beim trennen der Verbindung749ModeratorDaveS19.12.08 12:19

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