TCP Client - durchgehend empfangen

  • VB.NET

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von VaporiZed.

    TCP Client - durchgehend empfangen

    Hallo zusammen,

    ich habe das Problem, dass ich mit meinem TCPClient nur eine Nachricht empfange, dies wird so sein, da das Programm dann durchgelaufen ist.
    Leider finde ich nicht raus, wo ich hier eine Schleife einbauen muss, sodass er wiederholt nach Daten Ausschau hält.

    Vielen Dank
    Schöne Grüße

    VB.NET-Quellcode

    1. Dim ip As String = "xxx.xxx.xxx.xxx"
    2. Dim port As Int32 = 1234
    3. Try
    4. Using client As New TcpClient(ip, port)
    5. Dim stream As NetworkStream = client.GetStream()
    6. Dim data = New [Byte](256) {}
    7. Dim responseData As [String] = [String].Empty
    8. Dim bytes As Int32 = stream.Read(data, 0, data.Length)
    9. responseData = System.Text.Encoding.ASCII.GetString(data, 0, bytes)
    10. MsgBox(responseData)
    11. End Using
    12. Catch e As ArgumentNullException
    13. MsgBox(e.toString)
    14. Catch e As SocketException
    15. MsgBox(e.toString)
    16. End Try
    @bene Willkommen im Forum. :thumbup:
    Normalerweisew arbeitet ein Client nur auf Anforderung, der Server arbeitet permanent.
    Um eine saubere Abbruch-Bedingung zu haben, empfehle ich Dir, diese Schleife in einer Timer-Tick-Prozedur aufzurufen.
    Allerdings musst Du dann aufpassen, dass die Prozedur erst dann wieder aufgerufen werden soll, wenn sie nach dem letzten Aufruf verlassen wurde.
    MessageBoxen haben in einer solchen Prozedur nix zu suchen!
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    ähm, sehe ich ganz anders.
    IMO darf ein TcpClient nicht in einen Using-Block, weil dann isser ja sofort wieder kaputt.
    Aufgabe eines TcpClients ist ja, mit einem Server in Verbindung zu treten, und die Verbindung zu halten.
    Es ist empfehlenswert, den TcpClient in einem NebenThread laufen zu lassen, und da eine Schleife oder gar eine Async-Alternative dazu zu coden.
    Im TutorialBereich habich Tut dazu gemacht, allerdings ziemlich fortgeschrittenes Niveau, weil nur mit bischen ByteSalat empfangen isses ja üblicherweise nicht getan.

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

    Es kommt drauf an, wie die Kommunikation zwischen Client und Server gedacht ist. Bei mir ist es oft so, dass der Server lauert, ein Client entweder was will oder was sendet. Der Client baut die Verbindung zum Server auf, macht, was getan werden soll und verabschiedet sich wieder. Das ist aber nur eines von mehreren möglichen Szenarien, wie man Client und Server verwenden kann. Es kommt auf den Zweck drauf an. Daher: Was soll genau passieren?
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.