vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Mails senden, abrufen und decodieren - ganz easy ;-)  
 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: Port forwarding 
Autor: Preisser
Datum: 17.05.11 17:52

Hallo,

die Länge wird nach dem Lesevorgang zurückgegeben.
Man macht dies normalerweise so, dass man ein Byte-Array erstellt, und in das hineinliest. Dann schreibt man in den Stream, und übergibt der Write-Methode die Länge, die die Read-Methode vom anderen Stream vorher zurückgegeben hat. z.B.
            Dim buffer as Byte() = new Byte(10000) {}
            Do While True
                Dim readLen As Integer = strIn.Read(buffer, 0, buffer.Length)
                If readLen <= 0 Then Exit Do
                strOut.Write(buffer, 0, readLen)
            Loop
Wobei strIn der Stream ist, aus dem gelesen wird, und strOut der Stream, in den geschrieben wird.

Aufgrund deines vorherigen Beitrags, dass es nicht funktionieren würde, hab ich auch mal schnell in VB.Net ein Port-Forwarding-Programm probiert:
Option Strict On
Imports System.Net
Imports System.Net.Sockets
Imports System.IO
 
Public Class TcpForwarder
    Private ReadOnly Endpoint As IPEndPoint
    Private ReadOnly ZielHost As String
    Private ReadOnly ZielPort As Integer
 
    Public Sub New(ByVal Endpoint As IPEndPoint, ByVal ZielHost As String, _
      ByVal ZielPort As Integer)
        Me.Endpoint = Endpoint
        Me.ZielHost = ZielHost
        Me.ZielPort = ZielPort
    End Sub
 
 
    Private Class Verbindung
        Public ReadOnly ConServer As TcpClient
        Public ReadOnly ConClient As TcpClient
        Public Sub New(ConServer As TcpClient, ConClient As TcpClient)
            Me.ConServer = ConServer
            Me.ConClient = ConClient
        End Sub
    End Class
 
    Public Sub Start()
        Dim ServerListener As New TcpListener(Endpoint)
        ServerListener.Start()
        Do While True
            Dim serverSock As TcpClient = ServerListener.AcceptTcpClient
            Dim clientSock As New TcpClient()
            Dim verb As New Verbindung(serverSock, clientSock)
 
            'Empfangsthread
            Dim t As New System.Threading.Thread(AddressOf StarteEmpfangen)
            t.Start(verb)
        Loop
    End Sub
 
    Private Sub StarteEmpfangen(ByVal verbObj As Object)
        Dim verb As Verbindung = CType(verbObj, Verbindung)
        ' Ziel verbinden
        verb.ConClient.Connect(ZielHost, ZielPort)
 
        ' Verbunden, also Thread starten, der vom Ziel empfängt
        Dim t As New System.Threading.Thread(AddressOf Weiterleiten)
        t.Start(New Stream() {verb.ConClient.GetStream(), _
          verb.ConServer.GetStream()})
 
        Weiterleiten(New Stream() {verb.ConServer.GetStream(), _
          verb.ConClient.GetStream()})
    End Sub
 
 
    Private Sub Weiterleiten(ByVal StreamsObj As Object)
        Dim Streams As Stream() = CType(StreamsObj, Stream())
        Dim StrIn As Stream = Streams(0), StrOut As Stream = Streams(1)
        Dim buffer As Byte() = New Byte(9999) {}
        Try
            Do While True
                Dim readLen As Integer = StrIn.Read(buffer, 0, buffer.Length)
                If readLen <= 0 Then Exit Do
                ' in Client schreiben
                StrOut.Write(buffer, 0, readLen)
            Loop
        Catch Ex As IOException
            'auch Verbindung geschlossen
        End Try
        ' Verbindungsende
        StrOut.Close()
    End Sub
End Class
Könnte aber sein, dass spezielle Exceptions noch nicht behandelt werden (und anhalten kann man ihn nicht).
Ein Aufruf erfolgt dann z.b. mit
Dim fwd As TcpForwarder = New TcpForwarder(New System.Net.IPEndPoint( _
  System.Net.IPAddress.Any, 80), "www.google.de", 80)
        fwd.Start()
um eingehende Verbindungen auf dem Port 80 an Google weiterzuleiten.

Beitrag wurde zuletzt am 17.05.11 um 18:05:19 editiert.
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Port forwarding3.153c1b109.05.11 20:49
Re: Port forwarding1.337ModeratorDaveS10.05.11 13:25
Re: Port forwarding1.413c1b110.05.11 13:59
Re: Port forwarding1.373Preisser10.05.11 14:29
Re: Port forwarding1.345c1b110.05.11 16:24
Re: Port forwarding1.325ModeratorDaveS10.05.11 16:33
Re: Port forwarding1.315c1b111.05.11 07:03
Re: Port forwarding1.275Preisser11.05.11 14:33
Re: Port forwarding1.302c1b117.05.11 17:14
Re: Port forwarding1.268c1b117.05.11 17:39
Re: Port forwarding1.354Preisser17.05.11 17:52
Re: Port forwarding1.354c1b117.05.11 18:44

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