Es kommt immer wieder vor, dass man Daten an einen anderen PC oder Server übermitteln möchte: Dafür eignen sich Streams perfekt. Als erstes werden diese Importe benötigt: Imports System.Net Imports System.Net.Sockets Danach der Kopf der Klasse und die Deklarationen: ''' <summary> ''' Stellt Funktionen zum Verbinden mit TCP/IP-Servern bereit ''' </summary> ''' <remarks></remarks> Public Class TcpIPConnection Private Connection As TcpClient Die Funktion zum öffnen der Verbindung kann wie folgt implementiert werden: ''' <summary> ''' Öffnet einen TCP/IP-Stream zur angegebenen IP-Addresse ''' </summary> ''' <param name="IP">IP-Addresse des Servers</param> ''' <param name="Port">Zu benutzender Port</param> ''' <returns>Daten-Stream der Verbinung</returns> ''' <remarks></remarks> Public Function OpenConnection(ByVal IP As IPAddress, ByVal Port As Integer) As NetworkStream Connection = New TcpClient() ' Verbindung initialisieren Connection.Connect(IP, Port) ' Verbinden (synchron) Connection.SendTimeout = 500 ' Spätestens nach 500 Millisekunden senden Connection.SendBufferSize = 1048576 ' 1 Megabyte Puffer für ausgehende Daten Connection.ReceiveBufferSize = 10485760 ' und 10 Megabyte für einkommende Return Connection.GetStream ' Stream öffnen End Function Falls man die IP des Servers nicht weis, helfen diese Überladungen weiter: ''' <summary> ''' Öffnet einen TCP/IP-Stream zur angegebenen IP-Addresse ''' </summary> ''' <param name="Server">Name des Servers</param> ''' <param name="Port">Zu benutzender Port</param> ''' <returns>Daten-Stream der Verbinung</returns> ''' <remarks></remarks> Public Function OpenConnectionByServer(ByVal Server As String, ByVal Port As Integer) As NetworkStream ' IP finden und Verbinden Return OpenConnection(Dns.GetHostEntry(Server).AddressList(0), Port) End Function ''' <summary> ''' Öffnet einen TCP/IP-Stream zur angegebenen IP-Addresse ''' </summary> ''' <param name="IP">IP-Addresse des Servers</param> ''' <param name="Port">Zu benutzender Port</param> ''' <returns>Daten-Stream der Verbinung</returns> ''' <remarks></remarks> Public Function OpenConnection(ByVal IP As String, ByVal Port As Integer) As NetworkStream Dim address() As Byte = {IP.Split(".")(0), IP.Split(".")(1), IP.Split(".")(2), IP.Split(".")(3)} Return OpenConnection(New IPAddress(address), Port) End Function Zum Schluss sollte man die Verbindung wieder trennen: ''' <summary> ''' Trennt die Verbindung zum Server ''' </summary> ''' <remarks></remarks> Sub CloseConnection() Connection.Close() ' Verbindung schließen Connection = Nothing ' Speicher freigeben End Sub End Class Als kleinen Test kann man versuchen, eine HTTP-Verbindung zum vb@rchiv herzustellen. Dazu werden zwei kleine Hilfsfunktionen gebraucht, die zwischen String und Byte-Arrays konvertieren. Sub Test() Dim Connection As New TcpIPConnection Dim Stream As NetworkStream Dim Request As String = "GET /index.html HTTP/1.0" Stream = Connection.OpenConnectionByServer("www.vbarchiv.net", 80) Stream.Write(TextToByte(Request), 0, Request.Length) Dim Response As String Dim ResponseBytes(1024) As Byte While Not Stream.DataAvailable Threading.Thread.Sleep(50) End While Stream.Read(ResponseBytes, 0, 1024) Response = ByteToText(ResponseBytes) Connection.CloseConnection() End Sub Function TextToByte(ByVal Text As String) As Byte() Dim Bytes(Text.Length - 1) As Byte For I As Integer = 0 To Text.Length - 1 Bytes(I) = Asc(Text(I)) Next Return Bytes End Function Function ByteToText(ByVal Bytes() As Byte) As String Dim Text As New StringBuilder For I As Integer = 0 To Bytes.Length - 1 If Bytes(I) = 0 Then Exit For Text.Append(Chr(Bytes(I))) Next Return Text.ToString End Function Dieser Tipp wurde bereits 15.979 mal aufgerufen. Voriger Tipp | Zufälliger Tipp | Nächster Tipp
Anzeige
Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv Vol.6 (einschl. Beispielprojekt!) Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv! - nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten - Symbol-Galerie mit mehr als 3.200 Icons im modernen Look Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m. |
TOP! Unser Nr. 1 Neu! sevDataGrid 3.0 Mehrspaltige Listen, mit oder ohne DB-Anbindung. Autom. Sortierung, Editieren von Spalteninhalten oder das interaktive Hinzufügen von Datenzeilen sind ebenso möglich wie das Erstellen eines Web-Reports. Tipp des Monats März 2024 Dieter Otter UTF-8 Konvertierung von Dateien und Strings VB6 selbst verfügt über keine Funktionen zur UTF-8 Konvertierung von Daten. Mit Hilfe des ADODB.Stream-Objekts lassen sich diese fehlenden Funktionen aber schnell nachrüsten. Access-Tools Vol.1 Über 400 MByte Inhalt Mehr als 250 Access-Beispiele, 25 Add-Ins und ActiveX-Komponenten, 16 VB-Projekt inkl. Source, mehr als 320 Tipps & Tricks für Access und VB |
||||||||||||||||
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. |