2016-04-18 6 views
0

Hallo ist es möglich, intermediate-Anwendung zu erstellen, die als TCP-Proxy-Server fungiert? Es würde aus zwei Komponenten bestehen. IdTCPServer und IdTCPClient. Die Idee ist:Erstellen Sie TCP-TUNNELING-System mit Indy

Anwendung> verbindet zu IdTCPServer> alle Daten werden zu> IdTCPClient umgeleitet, der mit dem Ziel verbunden ist.

Und die von TCPClient empfangenen Daten werden an den IdTCPServer und die Anwendung umgeleitet. Ich habe so einfache App, und es funktioniert in HTTP-Anfragen, aber es schlägt fehl, wenn ich versuchte, es für RDP-Client zu verwenden (Ich habe Fehler, dass Protokoll falsch ist). Ist es überhaupt möglich? Ich benutze die ReadByte-Methode, und jedes einzelne Byte wird an den anderen IOHandler gesendet.

Ich möchte eine Art virtueller tcp-Kanal erstellen, der Verbindungen über NAT ermöglichen würde.

Ich war nicht klar genug. Was ich erreichen möchte, ist etwa folgendes:

RDP-Server < IdTCPClient <> IdTCPclient> NAT> IdTCPServer < RDPClient.

Antwort

4

Anwendung> verbindet mit IdTCPServer> alle Daten werden zu> IdTCPClient umgeleitet, der mit dem Ziel verbunden ist.

Und die von TCPClient empfangenen Daten werden an den IdTCPServer und die Anwendung umgeleitet.

In der Tat hat Indy eine Komponente speziell für diesen Zweck - TIdMappedPortTCP.

Legen Sie die Eigenschaften MappedHost und MappedPort so fest, dass sie auf das gewünschte Ziel zeigen, aktivieren Sie es, und alle eingehenden Verbindungen werden automatisch zum Ziel geleitet, und Daten werden in beide Richtungen hin und her gesendet.

2

Ich wollte nur einen Kommentar hinzufügen, aber dafür nicht genügend Punkte. Ihre Anfrage besagt, dass Sie "umleiten" möchten, für die Remy die Antwort lieferte.

Ihre Beschreibung klingt jedoch so, als ob Sie die Daten selbst weitergeben möchten (man-in-the-middle). RDP contains some guards against that, obwohl frühere Versionen möglicherweise offener waren.

Sie können die Frage genauer angeben, wenn die tatsächliche Weiterleitung nicht das ist, wonach Sie suchen.

+0

ja, ich war nicht präzise genug. Ich habe die Frage bearbeitet. – Flash