TCP Server läuft nicht

  • Allgemein

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

    TCP Server läuft nicht

    Hallo Leute,

    ich hab in der letzen Zeit einen Chat entwickelt, welcher mir ermöglicht vom Handy aus Daten an meinen PC zu senden, und das ganze über TCP/IP

    Die App funktioniert zu 100% ich habe sie anhand eines Opensource TCP-Servers ausprobiert und alle Daten erhalten.
    Jedoch ist es so das in dem von mir gegeben Server die Daten nicht ankommen, also beim erste Verbinden erhalt ich zwar meinen String der ausgibt das jemand Connected hat (übertrage ich nach erfolgreicher Verbindung von der App) jedoch werden alle zu übertragende Daten die danach kommen nicht mehr angezeigt.
    Ich habe mich von einem OpenSource Project von den Server stark beeinflussen lassen (um nicht zu sagen C&P ^^).

    Die App habe ich mithilfe des Tools 'Hercules v3.2.5' getestet, und wie gesagt der empfäng alle Daten.

    Nebeninfos.
    - Die gesamte Kommunikation findet im Heimnetzwerk statt.
    - Bei dem Smartphone handelt es sich um ein Samsung - Gerät mit Android 4.0.4 Version.
    - Verbindungprobleme sind soweit von mir aus ausgeschlossen, da die erste Nachricht ja empfangen wird.


    Anbei übersende ich hier noch 'meinen' Code. Ich benutze eine WindowsFormsApplication und möchte diese auch gerne beibehalten also nicht umbedingt auf Console wechseln, aufgrund von späteren Vorhaben.


    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(9092)
    6. Dim client As TcpClient
    7. Dim test As String = ""
    8. Dim msg As String = ""
    9. Dim lastmsg As String
    10. Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
    11. listener.Stop()
    12. End Sub
    13. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    14. Dim listthread As New Thread(New ThreadStart(AddressOf listening))
    15. listthread.Start()
    16. RichTextBox1.Text &= "Server läuft!"
    17. End Sub
    18. Private Sub listening()
    19. listener.Start()
    20. End Sub
    21. 'Timerinterval = 1
    22. 'Timer1.Enabled = True (Standart)
    23. Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
    24. If listener.Pending = True Then
    25. msg = ""
    26. client = listener.AcceptTcpClient
    27. Dim reader As New StreamReader(client.GetStream())
    28. While reader.Peek > -1
    29. msg = msg + Convert.ToChar(reader.Read()).ToString
    30. End While
    31. RichTextBox1.Text = RichTextBox1.Text & msg & vbCrLf
    32. Else : End If
    33. End Sub



    Freu mich wie immer über Antworten zum Thema!
    das ganze in einem Timer laufen zu lassen ist wahrscheinlich ein Problem. Normalerweise benutzt man einen Backgroundworker (bzw Thread) mit einer Endlosschleife.
    Die Abfrage if listener.Pending = true bricht dir vermutlich das Genick und ist dein zweites Problem: dort wird gefragt ob eine neue Verbindugsanforderung ansteht. Der Code inherhalb des Blocks wird also nur ein einziges mal ausgeführt: dann, wenn sich das Handy verbindet. Darum kommt auch nur die erste Message an.
    Der Timer ist nicht nur ein Problem, es ist einfach nur Schwachsinn. Ich hab ja keine Ahnung, wo Du Dir diesen Code C&P hast, aber hättest Dir mal wenigstens was anständiges kopiert.

    vb-paradise.de/allgemeines/sou…ehigem-server/#post487450
    Die Unendlichkeit ist weit. Vor allem gegen Ende. ?(
    Manche Menschen sind gar nicht dumm. Sie haben nur Pech beim Denken. 8o