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.978 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. |
sevISDN 1.0 Überwachung aller eingehender Anrufe! Die DLL erkennt alle über die CAPI-Schnittstelle eingehenden Anrufe und teilt Ihnen sogar mit, aus welchem Ortsbereich der Anruf stammt. Weitere Highlights: Online-Rufident, Erkennung der Anrufbehandlung u.v.m. 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. Neu! sevEingabe 3.0 Einfach stark! Ein einziges Eingabe-Control für alle benötigten Eingabetypen und -formate, inkl. Kalender-, Taschenrechner und Floskelfunktion, mehrspaltige ComboBox mit DB-Anbindung, ImageComboBox u.v.m. |
||||||||||||||||
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. |