|
Tipp 0469
|
Port-Weiterleitung
|
|
|
Autor/Einsender: Datum: |
|
Kilian Meyer 05.11.2005 |
|
Entwicklungsumgebung: |
|
VB 6 |
|
|
Dieser Tipp zeigt, wie man mit dem Winsock-Control Ports weiterleiten (forwarden) kann.
Auch bestehende Protokolle (POP3, SMTP, IRC, ...) kann man damit erforschen, um sie aus eigenen
Anwendungen heraus zu testen.
|
Um etwa das POP3-Protokoll zu erforschen, gibt man als Listen-Port 110 an. Unter "Connect to" als
Port 110 und als Server den eigenen POP3-Server. Man startet den Service und stellt im Mail-Client die
IP-Adresse des POP3-Servers auf "127.0.0.1" oder auch "localhost" ein. Nun empfängt man standardmäßig über den
Mail-Clienten seine E-Mails und kann dann das Protokoll im Log-Fenster nachvollziehen.
Auf diese Weise kann man auch das IRC-Protokoll "ausspionieren", um einen eigenen IRC-Bot zu schreiben.
|
Der eigentliche Einsatz der Port-Weiterleitung bleibt allerdings einen Port auf einem Computer zu öffnen und
alle Verbindungen an einen anderen Computer und/oder einen anderen Port weiterzuleiten.
|
Möchte man etwa einen Server der in einem Firmen- oder Heimnetzwerk auf einem Client-Rechner liegt von
außerhalb ansprechen, so installiert man auf dem Netzwerk-Server den Port-Forwarder und lässt den
gewünschten Port an die Netzwerk-IP weiterleiten.
|
Genau das selbe wird bei der Linux-Firewall mit dem Befehl "iptables -t nat -A PREROUTING ..." erreicht.
|
|
|
Option Explicit
Dim bConnected As Boolean
Dim bSendComplete1 As Boolean
Dim bSendComplete2 As Boolean
'Laden der Form
Private Sub Form_Load()
bConnected = False
bSendComplete1 = True
bSendComplete2 = True
End Sub
'Starten/Beenden des Vorgangs
Private Sub Command1_Click()
If bConnected = False Then
wsckListen.Close
wsckSend.Close
wsckListen.LocalPort = Text2.Text
wsckListen.Listen
Command1.Caption = "Stop Service"
List1.Clear
bConnected = True
Else
Call SetStatus("Closing Connection . . .")
wsckListen.Close
wsckSend.Close
Call SetStatus("Connection closed!")
bConnected = False
Command1.Caption = "Start Service"
End If
End Sub
'Statusanzeige setzen
Public Function SetStatus(ByVal sText As String)
List1.AddItem "[" & Format(Time(), "hh:mm:ss") & "] " & sText
End Function
'Bei Click auf die Status-Liste
Private Sub List1_Click()
Dim iCount As Integer
For iCount = 0 To List1.ListCount - 1
If List1.Selected(iCount) = True Then
Text5.Text = List1.List(iCount)
Exit For
End If
Next iCount
End Sub
'Bei einem Verbindungsaufbau an den Listen-Port
Private Sub wsckListen_ConnectionRequest(ByVal requestID As Long)
If wsckListen.State <> sckClosed Then
wsckListen.Close
Call SetStatus("Client is connecting . . .")
Call SetStatus("Connecting to Server . . .")
wsckSend.RemoteHost = Text4.Text
wsckSend.RemotePort = Text3.Text
wsckSend.Connect
Do While wsckSend.State <> sckConnected
DoEvents
Loop
Call SetStatus("Connected to Server successfully!")
wsckListen.Accept requestID
Do While wsckListen.State <> sckConnected
DoEvents
Loop
Call SetStatus("Connected to Client successfully!")
bConnected = True
End If
End Sub
'Beim Empfangen vom Client
Private Sub wsckListen_DataArrival(ByVal bytesTotal As Long)
Dim sData As String
Call wsckListen.GetData(sData, vbString)
If wsckSend.State = sckConnected Then
Do While bSendComplete1 = False
DoEvents
Loop
Call SetStatus("|-> " & sData)
bSendComplete1 = False
wsckSend.SendData sData
End If
End Sub
'Beim Empfangen vom Server
Private Sub wsckSend_DataArrival(ByVal bytesTotal As Long)
Dim sData As String
Call wsckSend.GetData(sData, vbString)
If wsckListen.State = sckConnected Then
Do While bSendComplete2 = False
DoEvents
Loop
Call SetStatus("|<- " & sData)
bSendComplete2 = False
wsckListen.SendData sData
End If
End Sub
'Wenn das Senden an den Server vollendet ist
Private Sub wsckListen_SendComplete()
bSendComplete2 = True
End Sub
'Wenn das Senden an den Clienten vollendet ist
Private Sub wsckSend_SendComplete()
bSendComplete1 = True
End Sub
|
|
|
Windows-Version |
95 |
|
|
98 |
|
|
ME |
|
|
NT |
|
|
2000 |
|
|
XP |
|
|
Vista |
|
|
Win
7 |
|
|
|
VB-Version |
VBA 5 |
|
|
VBA 6 |
|
|
VB 4/16 |
|
|
VB 4/32 |
|
|
VB 5 |
|
|
VB 6 |
|
|
|
|
Download (3,5
kB)
|
Downloads bisher: [ 817 ]
|
|
|