TCP Verbindung, Zielcomputer verweigert die Verbindung

  • VB.NET

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von haiyyu.

    TCP Verbindung, Zielcomputer verweigert die Verbindung

    Hey,

    ich habe eine Problem mit einer TCP Verbindung über das Internet. Erstmal zu dem Programm (nicht von mir sondern von SemperVideo) :

    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(5005)
    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, 5005)
    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. TextBox3.Text = TextBox3.Text & message & vbCrLf
    33. Else : End If
    34. End Sub
    35. End Class

    Lokal funktioniert es, nur sobald ich mir praktisch selbst etwas über das Internet senden möchte, bekomme ich die Fehlermeldung, dass der Zielcomputer die Verbindung verweigert. Jetzt sollte man wissen, dass ich einen Instant Messenger als Projektarbeit abgeben möchte, am Ende würde ich dann eine Client Anwendung haben und eine Serveranwendung.
    Woran liegt es nun genau, dass ich praktisch keinen Zugriff auf den eigenen PC (über das Internet) habe ? Ich habe in der Windows Firewall den Port 5005 freigegeben. Liegt es jetzt am Router ? Wenn ja, kann man ja nicht von jedem Clientanweder erwarten, dass er erst den Router konfigurieren muss damit das Programm läuft, bei ICQ etc. funktioniert es schließlich auch so.
    Der Client muss nichts freigeben, da sie nur Connecten, aber der Server, dort muss der Port weitergeleitet werden. Nur in der FW den Port freigeben reicht nicht aus, sondern du musst bei deinem Router auch den Port freigeben bzw. festlegen das Anfragen über Port 5005 an deinen Rechner bzw. den Serverrechner weitergeleitet werden.
    und SemperVideo führt das so vor, dass mit einem TimerTick nachgeguckt werde, ob ein Client sich connecten möchte??

    scheint mir ein etwas abwegiges Anwendungs-Design.

    probierma VersuchsChat - da ist auch bischen was zur PortWeiterleitung versucht zu erklären

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

    Der Client muss nichts freigeben, da sie nur Connecten, aber der Server, dort muss der Port weitergeleitet werden. Nur in der FW den Port freigeben reicht nicht aus, sondern du musst bei deinem Router auch den Port freigeben bzw. festlegen das Anfragen über Port 5005 an deinen Rechner bzw. den Serverrechner weitergeleitet werden.
    Aber wenn der Server nun Informationen an den Client senden möchte, blockiert der Client doch einfach, oder nicht ?
    Nein, nur wenn man eine Verbindung annehmen möchte, muss man auf einem Port "lauschen" und das geht nur wenn der Port weitergeleitet wird, da es ein EINGEHENDER Port ist. Nach außen sind ALLE Ports offen.
    Da der Server also Lauscht, muss dort der Port offen sein, die Clients stellen dann auf die IP und den Port eine Verbindung auf. Sobald diese steht kann von beiden Seiten in den Netzwerk Stream geschrieben werden. Das Port Problem besteht nur bei der Verbindung, also das Programm zu welchem Connected wird braucht den offenen Port.
    Programme wie ICQ haben einen (oder mehrere) zentrale Server, die alle Clients verwalten und ihre Daten austauschen.
    Die Server muessen dazu natuerlich immer online sein.