vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
NEU! sevCoolbar 3.0 - Professionelle Toolbars im modernen Design!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
Re: Permanentes Einlesen über TCP Socket 
Autor: Preisser
Datum: 05.07.13 14:22

Hallo,

wenn man eine TCP-Verbindung aufbaut, dann wird man eigentlich meistens dauerhaft einlesen, sonst würde die Verbindung ja nichts bringen - man will die Daten, die der Gegenüber schickt, so schnell wie möglich erhalten (außer wenn man beispielsweise eine Geschwindigkeitsdrosselung einbauen will, um sich vor DoS zu schützen, oder bei Protokollen wie HTTP, die nach dem Request-Response-Schema aufgebaut sind).

Im einfachsten Fall benutzt man dafür einen separaten Lesethread, der eben ständig vom TCP-Stream liest, bis nichts mehr ankommt, also sowas wie
            ' Verbinden...
            Dim tcp As New TcpClient("www.vbarchiv.net", 80)
 
            'Verbindung hergestellt
            Dim stream As NetworkStream = tcp.GetStream()
 
            'Hier kann jetzt z.B. auch ein Sendethread gestartet werden
 
            'Lesen
            Dim buffer As Byte() = New Byte(4095) {}
            Dim bytesRead As Integer
            While True
                bytesRead = stream.Read(buffer, 0, buffer.Length)
                If bytesRead <= 0 Then Exit While
 
                ' Irgendwas mit den Bytes machen...
            End While
 
            ' Verbindung wurde geschlossen
Zum Senden müsste man dann noch einen separaten Sendethread starten.
Wenn nach dem Empfangen eines Datenpakets dieses beispielsweise in der GUI weiterverarbeitet werden soll, müsste man noch BeginInvoke(...) bzw. Invoke(...) verwenden.

Wenn man nicht extra Threads für BIO (Blocking I/O) verwenden will, die dauerhaft einer Verbindung zugewiesen sind, kann man auch die Async-Methoden verwenden, die dann NIO (Non-blocking I/O) verwenden - dort wird nur dann aus einem Threadpool ein Thread verwendet, wenn Daten angekommen sind bzw. gesendet wurden, und dieser Thread wird anschließend sofort wieder in den Threadpool zurückgegeben.

Beitrag wurde zuletzt am 05.07.13 um 14:31:02 editiert.
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Permanentes Einlesen über TCP Socket1.054AcidRain05.07.13 09:27
Re: Permanentes Einlesen über TCP Socket663Preisser05.07.13 14:22

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel