Chat TcpChat Fehler

  • VB.NET
  • .NET (FX) 4.5–4.8

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

    Chat TcpChat Fehler

    Ich habe einen TcpChat erstellt mit dem folgendem Code:

    VB.NET-Quellcode

    1. Imports System.Net.Sockets
    2. Imports System.Threading
    3. Imports System.IO
    4. Public Class Form1
    5. Dim Listener As New TcpListener(55555)
    6. Dim client As TcpClient
    7. Dim message As String
    8. Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click
    9. client = New TcpClient(TextBox4.Text, 55555)
    10. Dim writer As New StreamWriter(client.GetStream())
    11. writer.Write(sendchat)
    12. chatbox.AppendText(Format(Now, "[dd.MM.yyyy | hh:mm:ss] ") & "Du: " & vbNewLine & sendchat.Text & vbCrLf)
    13. sendchat.Text = ""
    14. writer.Flush()
    15. End Sub
    16. Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
    17. If Listener.Pending = True Then
    18. message = ""
    19. client = Listener.AcceptTcpClient
    20. Dim reader As New StreamReader(client.GetStream())
    21. While reader.Peek > -1
    22. message = message + Convert.ToChar(reader.Read()).ToString
    23. End While
    24. chatbox.AppendText(Format(Now, "[dd.MM.yyyy | hh:mm:ss] ") & "Benutzer: " & vbNewLine & message & vbCrLf)
    25. Else : End If
    26. End Sub
    27. Private Sub listening()
    28. Listener.start()
    29. End Sub
    30. Private Sub Form1_FormClosing(sender As Object, e As FormClosingEventArgs) Handles Me.FormClosing
    31. Listener.Stop()
    32. Application.Exit()
    33. End Sub
    34. Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    35. Dim listthread As New Thread(New ThreadStart(AddressOf listening))
    36. listthread.Start()
    37. End Sub



    Das selbstgesendete wird richtig angezeigt, jedoch was ein anderer Sendet wird wie folgt angezeigt:

    [19.10.2014 | 01:50:16] Benutzer:
    System.Windows.Forms.RichTextBox, Text: Test-Text


    Wie kann man das "System.Windows.Forms.RichTextBox, Text: " entfernen?
    Ich gehe mal davon aus, dass das bei Option Strict On gar nicht kompiliert hätte, sondern dich gleich mit der Nase darauf gestoßen hätte.

    Edit:
    Hab gerade nachgeschaut.
    Write hat eine Überladung vom Typ Object, die automatisch Object.ToString verwendet.
    Ganz schön blöde.
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --

    petaod schrieb:

    Ganz schön blöde.
    Deswegen bietet es sich an, eine Protokoll-DLL zu erstellen (oder vorhandene zu verwenden), die dann ausschließlich Text als Nachricht akzeptieren. Außerdem wird dadurch der Code übersichtlicher, da man Kommunikation und GUI nicht in einer Datei behandelt. @kingsunil2000
    Mit freundlichen Grüßen,
    Thunderbolt