TCP/IP Chat - Server empfängt nur eine Nachricht

  • VB.NET

Es gibt 1 Antwort in diesem Thema. Der letzte Beitrag () ist von Combat_Henry.

    TCP/IP Chat - Server empfängt nur eine Nachricht

    Hallo Community :)

    Ich bin gerade dabei das Grundgerüst für einen Client-Server-Chat unter Verwendung von TCP/IP zu schreiben. Allerdings empfängt der Server (und genau genommen auch der Client, da die Codes größtenteils identisch sind) immer nur die erste versandte Nachricht. Alle weiteren Nachrichten, die ich verschicke, werden nicht empfangen. Was habe ich falsch gemacht?

    Hier der Code des Servers:


    VB.NET-Quellcode

    1. Imports System.Net
    2. Imports System.Net.Sockets
    3. Imports System.IO
    4. Class Form1
    5. Dim message As String = ""
    6. Dim listener As TcpListener
    7. Dim Client As TcpClient
    8. Dim stream As NetworkStream
    9. Dim reader As StreamReader
    10. Dim writer As StreamWriter
    11. Dim thread As Threading.Thread
    12. Delegate Sub chat_write_delegate()
    13. Private Sub button_connect_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles button_connect.Click
    14. thread = New Threading.Thread(AddressOf connect)
    15. thread.Start()
    16. rtxt_chat.Text = TimeOfDay & vbTab & "Connecting..." & vbCrLf
    17. End Sub
    18. Public Sub connect()
    19. listener = New TcpListener(IPAddress.Any, txt_port.Text)
    20. listener.Start()
    21. Client = listener.AcceptTcpClient
    22. stream = Client.GetStream
    23. writer = New StreamWriter(stream)
    24. reader = New StreamReader(stream)
    25. While Client.Connected = True
    26. While reader.Peek() > -1
    27. message = message & Convert.ToChar(reader.Read()).ToString
    28. If Not reader.Peek() > -1 Then
    29. MsgBox(message)
    30. Me.Invoke(New chat_write_delegate(AddressOf write_message))
    31. End If
    32. End While
    33. End While
    34. End Sub
    35. Sub write_message()
    36. rtxt_chat.Text = rtxt_chat.Text & message & vbCrLf
    37. message = ""
    38. End Sub
    39. Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles button_send.Click
    40. writer.Write(txt_send.Text)
    41. writer.Flush()
    42. txt_send.Text = ""
    43. End Sub
    44. End Class


    Greetingz

    Jakob

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Combat_Henry“ ()

    Habe das Problem jetzt selbst gelöst. Der korrigierte Lesevorgang sieht so aus:

    [vb While Client.Connected = True
    message = message & reader.ReadLine.ToString
    Me.Invoke(New chat_write_delegate(AddressOf write_message))
    End While
    ][/vb]