Fehler bei TCP/IP Chat

  • VB.NET

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von Alarm.

    Fehler bei TCP/IP Chat

    Hallo ich habe ein Problem mit ein TCP/IP Chat.
    Ich wollte als Test mir eine Nachricht schreiben aber da kommt immer folgende Fehlermeldung, es müsste eigentlich gehen. Bitte helft mir ich habe es schon mit anderen Ports versucht aber da kam das gleiche. Muss ich was am Code was ändern oder muss ich an meinen Computer was umstellen. Und es liegt nicht an der falschen IP Adresse.


    Fehlermeldung:

    VB.NET-Quellcode

    1. Ein Verbindungsversuch ist fehlgeschlagen, da die Gegenstelle nach einer
    2. bestimmten Zeitspanne nicht richtig reagiert hat, oder die hergestellte Verbindung
    3. war fehlerhaft, da der verbundene Host nicht reagiert hat ???.??.??.???:44444

    Hier ist der Code vom Chat:

    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(44444)
    6. Dim client As TcpClient
    7. Dim message As String = ""
    8. Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
    9. listener.Stop()
    10. End Sub
    11. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    12. Dim listthread As New Thread(New ThreadStart(AddressOf listening))
    13. listthread.Start()
    14. End Sub
    15. Private Sub listening()
    16. listener.Start()
    17. End Sub
    18. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    19. client = New TcpClient(TextBox1.Text, 44444)
    20. Dim writer As New StreamWriter(Client.GetStream())
    21. writer.Write(TextBox2.Text)
    22. writer.Flush()
    23. End Sub
    24. Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
    25. If listener.Pending = True Then
    26. message = ""
    27. Client = listener.AcceptTcpClient()
    28. Dim reader As New StreamReader(client.GetStream())
    29. While reader.Peek > -1
    30. message = message + Convert.ToChar(reader.Read()).ToString
    31. End While
    32. Else : End If
    33. TextBox3.Text = TextBox3.Text & Message & vbCrLf
    34. End Sub
    35. End Class
    Sry, ich weiss zwar nicht wo Du diesen Code her hast, aber Du solltest ihn vollkommen überarbeiten:

    - Timer für Empfang von TCP-Messages unsinnig, arbeite mit AcceptTcpClient auf einem separaten Thread
    - Writer / Reader werden nach Verwendung geclosed und nicht immer neuer aufgemacht
    - der StreamReader hat eine ReadToEnd Methode
    - Fehler ist nicht nachzuverfolgen weil weder Code-Zeile angegeben noch Textbox1, Textbox2 Inhalt klar

    Als Beispiel für die Überarbeitung nimm Kevin's Multiserver (TCP) Code