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:
Normalerweise sollte der Client
ausgeben
Stattdessen gibt er jedoch
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
Client:
Spoiler anzeigen
Wie man sehen kann ist das
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..?
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:
Normalerweise sollte der Client
ausgeben
Stattdessen gibt er jedoch
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:
VB.NET-Quellcode
- Dim broadcastSocket As TcpClient
- broadcastSocket = CType("Client1", TcpClient)
- Dim broadcastStream As NetworkStream = broadcastSocket.GetStream()
- Dim broadcastBytes As [Byte]()
- If flag = True Then
- broadcastBytes = Encoding.ASCII.GetBytes(uName + " says: " + msg)
- Else
- broadcastBytes = Encoding.ASCII.GetBytes(msg)
- End If
- Try
- broadcastStream.Write(broadcastBytes, 0, broadcastBytes.Length)
- broadcastStream.Flush()
- Catch ex As Exception
- End Try
- Next
Client:
VB.NET-Quellcode
- Private Sub getMessage()
- Try
- Do
- serverStream = clientSocket.GetStream()
- Dim buffSize As Integer
- Dim inStream(10024) As Byte
- buffSize = clientSocket.ReceiveBufferSize
- serverStream.Read(inStream, 0, buffSize)
- Dim returndata As String = System.Text.Encoding.ASCII.GetString(inStream)
- readData = returndata
- msg()
- Loop
- Catch ex As Exception
- clientSocket.Close()
- serverStream.Close()
- readData = "The Chat-Server has exited"
- msg()
- Exit Sub
- End Try
- End Sub
- Private Sub msg()
- If Me.InvokeRequired Then
- Me.Invoke(New MethodInvoker(AddressOf msg))
- Else
- If Not readData = Nothing Then
- TextBoxLog.Text &= " >> " & readData
- TextBoxLog.Text &= vbNewLine
- End If
- End If
- End Sub
Wie man sehen kann ist das
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..?