vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
SEPA-Dateien erstellen inkl. IBAN-, BLZ-/Kontonummernprüfung  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

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

VB.NET - Fortgeschrittene
TCPClient hängt sich nach Empfang einer Nachricht auf 
Autor: Alexander
Datum: 12.08.05 12:49

Hallo zusammen,

ich habe mal wieder ein Problem:
Und zwar habe ich eine Client-Server-Anwendung in .NET geschrieben, mit der man über das Netzwerk kommunzierten werden soll. Das klappt auch so weit gut. Jedoch scheitere ich an dem Vorhaben, bei Empfang einer bestimmten Nachricht ein neues Formular anzuzeigen.

Mein Code (Client, Ausschnitt):
[...]
    Public Function Connect()
 
        ' Verbinden
        Try
 
            InitSettingsManager()
 
            ' TCP-Verbindung aufbauen
            Client = New TcpClient("localhost", PORT_NUM)
 
            ' Lesen starten
            Client.GetStream.BeginRead(ReadBuffer, 0, READ_BUFFER_SIZE, _
              AddressOf DoRead, Nothing)
 
            ' Anmelden
            AttemptLogin()
 
        Catch Ex As Exception
            MarkAsDisconnected()
        End Try
 
    End Function
 
    Private Sub DoRead(ByVal ar As IAsyncResult)
 
        Dim BytesRead As Integer
        Dim strMessage As String
 
        Try
            ' Finish asynchronous read into readBuffer and return number of 
            ' bytes read.
            BytesRead = Client.GetStream.EndRead(ar)
            If BytesRead < 1 Then
                ' If no bytes were read server has close.  Disable input window.
                MarkAsDisconnected()
                Exit Sub
            End If
 
            ' Convert the byte array the message was saved into, minus two for 
            ' the
            ' Chr(13) and Chr(10)
            strMessage = Encoding.ASCII.GetString(ReadBuffer, 0, BytesRead)
nochmal:
            For i As Long = 1 To Len(strMessage)
 
                ' Nun die Chr(13) und Chr(10) Zeichen finden
                If Mid(strMessage, i, 1) = Chr(13) Then
 
                    ProcessCommands(Mid(strMessage, 1, i - 1))
                    If Trim(strMessage) <> "" Then
                        strMessage = Replace(strMessage, Left(strMessage, i - _
                          1), "", , , CompareMethod.Text)
                    Else
                        Exit For
                    End If
 
                    If Len(strMessage) > 4 Then GoTo nochmal
 
                End If
 
            Next
 
            ' Start a new asynchronous read into readBuffer.
            Client.GetStream.BeginRead(ReadBuffer, 0, READ_BUFFER_SIZE, _
              AddressOf DoRead, Nothing)
        Catch e As Exception
            MarkAsDisconnected()
        End Try
 
    End Sub
 
    Private Sub ProcessCommands(ByVal strMessage As String)
 
        Dim dataArray() As String
 
        ' Befehl spliten (|)
        dataArray = strMessage.Split(Chr(124))
 
        ' Befehle ermitteln
        Select Case dataArray(0)
 
            [...]
 
            Case "CHAT"
 
                DisplayText(dataArray(1), dataArray(2))
 
        End Select
 
    End Sub
 
    Private Sub DisplayText(ByVal User As String, ByVal Text As String)
 
        ' Meldung ist angekommen
        With New frmChat
 
            .Show()
            .AddMessage(User, Text)
            .Focus()
 
        End With
 
    End Sub
Wenn nun der Client den Befehl CHAT bekommt, wird das Fenster geöffnet. Doch es hängt sich auf. Warum?

Kennt jemand eine Lösung für das Problem?


Alexander
http://www.planet-source.de - http://www.alexosoft.de
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
TCPClient hängt sich nach Empfang einer Nachricht auf898Alexander12.08.05 12:49
Re: TCPClient hängt sich nach Empfang einer Nachricht auf580Silver15.08.05 15:05
Re: TCPClient hängt sich nach Empfang einer Nachricht auf513Alexander15.08.05 16:21

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-2024 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