Über TCP übermittelter String wird abgeschnitten

  • VB.NET

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von haufe.

    Über TCP übermittelter String wird abgeschnitten

    Hey Community.
    Ich hab mal wieder eine ganz banale Frage.

    Mein Projekt:
    Ich habe einen TCP Server und einen TCP Client.
    Der Server übermittelt dem Client eine Nachricht, die der Client in einer TextBox wiedergeben soll.
    Das übermitteln funktioniert auch.

    Mein Problem:
    Der String wird am Ende abgeschnitten.
    Zum Test hab ich an den Anfang und das Ende Anführungszeichen gemacht. Also der Client gibt den empfangenen String mit Anführungszeichen aus.
    Ein Beispiel:

    Der Server sendet:

    Quellcode

    1. Hallo

    Normalerweise sollte der Client

    Quellcode

    1. "Hallo"

    ausgeben
    Stattdessen gibt er jedoch

    Quellcode

    1. "Hallo

    Quellcode

    1. "

    aus.
    Also einmal "Hallo ohne Anführungszeichen am Ende, und dann wird die Ausgabe-Funktion nochmal aufgerufen da wird dann nur ein Anführungszeichen ausgegeben.

    Mein Code:
    Server:
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Dim broadcastSocket As TcpClient
    2. broadcastSocket = CType("Client1", TcpClient)
    3. Dim broadcastStream As NetworkStream = broadcastSocket.GetStream()
    4. Dim broadcastBytes As [Byte]()
    5. If flag = True Then
    6. broadcastBytes = Encoding.ASCII.GetBytes(uName + " says: " + msg)
    7. Else
    8. broadcastBytes = Encoding.ASCII.GetBytes(msg)
    9. End If
    10. Try
    11. broadcastStream.Write(broadcastBytes, 0, broadcastBytes.Length)
    12. broadcastStream.Flush()
    13. Catch ex As Exception
    14. End Try
    15. Next

    Client:
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Private Sub getMessage()
    2. Try
    3. Do
    4. serverStream = clientSocket.GetStream()
    5. Dim buffSize As Integer
    6. Dim inStream(10024) As Byte
    7. buffSize = clientSocket.ReceiveBufferSize
    8. serverStream.Read(inStream, 0, buffSize)
    9. Dim returndata As String = System.Text.Encoding.ASCII.GetString(inStream)
    10. readData = returndata
    11. msg()
    12. Loop
    13. Catch ex As Exception
    14. clientSocket.Close()
    15. serverStream.Close()
    16. readData = "The Chat-Server has exited"
    17. msg()
    18. Exit Sub
    19. End Try
    20. End Sub
    21. Private Sub msg()
    22. If Me.InvokeRequired Then
    23. Me.Invoke(New MethodInvoker(AddressOf msg))
    24. Else
    25. If Not readData = Nothing Then
    26. TextBoxLog.Text &= " >> " & readData
    27. TextBoxLog.Text &= vbNewLine
    28. End If
    29. End If
    30. End Sub


    Wie man sehen kann ist das

    VB.NET-Quellcode

    1. TextBoxLog.Text &= " >> " & readData
    2. TextBoxLog.Text &= vbNewLine

    so geschrieben, weil alles was hinter "readData" kommt (das vbNewLine) abgeschnitten wird
    Deshalb muss ich das in 2 Zeilen machen


    Meine Frage:
    Wieso wird der String so abgeschnitten..?