TCPListener funktioniert nicht

  • VB.NET

Es gibt 31 Antworten in diesem Thema. Der letzte Beitrag () ist von xDimitrius.

    TCPListener funktioniert nicht

    Ich habe zwar schon ein Theard eröffnet, aber hier geht es um etwas anderes.

    Mein TCPListener sollte funktionieren, aber er tut es nicht, er füllt die Variable "data" nicht, ich bin mittlerweile ratlos und überlege mein projekt abzubrechen.



    Mein Code:

    VB.NET-Quellcode

    1. Private Sub connect()
    2. Dim server = New TcpListener(IPAddress.Parse("192.168.2.101"), 80) 'IP wird eig. ermittelt, habe die Zeile verlohren.
    3. server.Start()
    4. Dim client = server.AcceptTcpClient()
    5. Dim stream = client.GetStream()
    6. Dim reader = New BinaryReader(stream)
    7. While True
    8. data = reader.ReadString
    9. If ListBox1.Items.Contains(data) Then
    10. MsgBox("Blah!")
    11. End If
    12. End While
    13. End Sub
    14. Private Sub BackgroundWorker1_DoWork(ByVal sender As System.Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWork 'wird gestartet durch einen button
    15. connect()
    16. End Sub




    DANKE!
    Was meinst du mit "er füllt die Variable data nicht"?
    Debugge das Programm schrittweise und schaue, ob er überhaupt am ReadString vorbeikommt.

    VB.NET-Quellcode

    1. Private Sub connect()
    2. Dim server = New TcpListener(IPAddress.Parse("192.168.2.101"), 80) 'IP wird eig. ermittelt, habe die Zeile verlohren.
    3. server.Start()
    4. Dim client = server.AcceptTcpClient() 'Hab den Breakpoint hier gesetzt, ab da geht es nicht weiter(glaube ich)
    5. Dim stream = client.GetStream()
    6. Dim reader = New BinaryReader(stream)
    7. While True
    8. data = reader.ReadString
    9. If ListBox1.Items.Contains(data) Then
    10. MsgBox("Blah!")
    11. End If
    12. End While
    13. End Sub

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

    Nö, dein Code erstellt einen Server. Da verbindet sich nicht. Und du hast bei New TcpListener immer noch nicht IPAddress.Any stehen.

    xDimitrius schrieb:

    er soll das ja ausführen bis das programm geschlossen wird oder der nutzer abbricht

    Aber wenn der Nutzer abbricht, kommt eine SocketException, die Du abfangen solltest wenn Dein Programm nicht abstürzen soll.

    Aber warum benutzt Du einen BinaryReader ? Werden vom Client Nutzer Binärdaten übertragen oder Strings ? In dem Fall nimm einen StreamReader ...
    ich bekomme einen fehler

    (ノಠ益ಠ)ノ彡┻━┻
    Was für einen?

    Der Server wartet auf Verbindungen, der Client verbindet sich.
    Schon mal ein Spiel gespielt? Du verbindest dich mit einem Server, wenn du einem Spiel beitrittst.
    Den Code für den Client hab ich dir übrigens im anderen Thread schon gegeben ... -_-
    "Normalerweise darf jede Socketadresse (Protokoll, Netzwerkadresse oder Anschluss) nur jeweils einmal verwendet werden"

    VB.NET-Quellcode

    1. Private Sub connect()
    2. Dim server = New TcpListener(IPAddress.Any, 80)
    3. server.Start()
    4. Dim client = server.AcceptTcpClient()
    5. Dim stream = client.GetStream
    6. Dim reader = New StreamReader(stream)
    7. While True
    8. data = reader.Read
    9. If ListBox1.Items.Contains(data) Then
    10. MsgBox("Blah!")
    11. End If
    12. End While
    13. End Sub
    Gut, dann mach mal alle Programme aus, die in irgendeiner Form einen Server auf Port 80 starten könnten (Skype macht das soweit ich weiß).
    Schau am besten in der Prozessliste nach, ob dein Programm nicht mehr läuft.
    Dann startest du den Server. Wenn es dann nicht funktioniert, probier einen Neustart.

    VB.NET-Quellcode

    1. Private Sub connect()
    2. Dim server = New TcpListener(IPAddress.Parse("192.168.2.101"), 80) 'geht nur so
    3. server.Start()
    4. Dim client = server.AcceptTcpClient()
    5. Dim stream = client.GetStream
    6. Dim reader = New StreamReader(stream)
    7. While True
    8. data = reader.Read
    9. If ListBox1.Items.Contains(data) Then
    10. MsgBox("ACHTUNG!!!")
    11. End If
    12. End While
    13. End Sub



    geht auch nicht ;( ;( ;(
    Ich bin mir zwar nicht sicher, was du überhaupt mit deinem Code bezwecken willst und was an dem Code nicht geht, aber es ist meistens wenig sinnvoll den Konstruktor von TcpListener mit den von dir verwendeten Argumenten aufzurufen. Dein Listener akzeptiert einen TcpClient nämlich nur, wenn dieser die IP "192.168.2.101" hat. Ich würde den TcpListener so erstellen:

    VB.NET-Quellcode

    1. Dim Listener As New TcpListener(New IPEndPoint(IPAddress.Any, Port))

    VB.NET-Quellcode

    1. Dim Listener As New TcpListener(New IPEndPoint(IPAddress.Any, Port))


    ich werde es testen


    Firewall:
    Ist aus. :rolleyes:



    EDIT: geht auch nicht :(


    Kann ich jemandem meinen ganzen SC schicken?

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „xDimitrius“ ()

    Wieso versteht eigentlich niemand, dass "geht auch nicht" keine Fehlerbeschreibung ist?
    Das ist so, als würdest du dein Auto zu einem Mechaniker bringen, "geht nicht" sagen und wieder gehen.

    Poste am besten mal deinen ganzen Source-Code ... und sag uns den Fehler, den du bekommst.
    haiyyu hat natürlich recht. Außerdem solltest du nicht nur den Source-Code posten, sondern uns wissen lassen was du eigentlich vor hast zu machen, also zu welchem Zweck du überhaupt einen TcpListener verwendest und wie dein Code aussieht, mit dem sich ein TcpClient verbinden kann.

    Für den Fall, dass du von Außen versuchst, eine Verbindung aufzubauen und NAT verwendest, musst du evtl. an deinem Router den verwendeten Port freigeben.