Home > Perl > TCP/UDP Pipe 1.0.0

TCP/UDP Pipe 1.0.0

Es gibt kein Problem, das man nicht mit Perl loesen koennte. TCP/UDP Pipe ist ein Perl Script, dass zwischen einem Server und einem Clienten eine Verbindung herstellt. Aehnlich wie bei Netcat, einem Proxy oder einem TCP-Tunnel. Man kann damit nicht nur eine TCP zu TCP und UDP zu UDP Verbindung betreiben, sondern auch UDP zu TCP und TCP zu UDP.

Wobei UDP zu TCP und TCP zu UDP nicht so reibungslos funktioniert wie zwei Verbindungen der gleichen Art. Natuerlich koennen auch mehrere Verbindungen gleichzeitig mit ein und dem selben Server hergestellt werden. Wenn sich ein neuer Client verbindet, wird dafuer ein eigener Socket erstellt. In der tcppipe.conf Datei, die auch in der zip-Datei enthalten ist, befindet sich ein Beispiel zum Testen. Wenn man die conf-Datei unveraendert laesst und tcppipe.pl startet, wird am lokalen Computer ein TCP Server auf Port 2102 erstellt. Wenn man dann mit dem Browser auf http://localhost:2102/ schaut, wird man feststellen, dass meine Seite erscheint. Die Anfragen an localhost:2102 werden also auf fox21.at:80 weitergeleitet. Die Konfigurationsdatei (tcppipe.conf) kann man natuerlich beliebig anpassen. Wenn localhost (= 127.0.0.1, Loopback) fuer den lokalen Server verwendet wird, dann kann man nur vom selben Computer darauf zugreifen. Nicht aber von einem Anderen. Wenn von jedem Computer im Netzwerk darauf zugegriffen werden darf, muss man fuer die lokale IP-Adresse z.B. 192.168.241.21 verwenden. Kommt darauf an, welche IP-Adresse der Computer im Netzwerk hat. Verwendet man 0.0.0.0 als lokale IP-Adresse fuer den Server, so wird auf allen Interfaces gelauscht (LISTEN). Dieses Script funktioniert auch mit ActivePerl. Es benoetigt die Module IO::Select, IO::Socket::INET und Time::HiRes.

Benoetigte Perl-Module

Konfiguration

  • Jeder server-Block muss einen client-Block enthalten.
  • Die ip, egal ob im server- oder im client-Block muss folgendes Format haben: host:port

Flags

Hier ist eine Liste mit den Bedeutungen des flags-Feldes, das in jedem server- und client-Block vorkommen sollte:

  • a = active: Wenn kein a vorkommt, wird der Server nicht erstellt. Damit kann man ganz einfach den Server ein- und ausschalten. Natuerlich wird dann auch kein Client erstellt. Was das a im Client-Block ueberfluessig macht.
  • t oder u: TCP oder UDP. Das t steht fuer TCP und das u fuer UDP. Schreibt man beides in das gleiche flags-Feld, so wird TCP verwendet.
  • s, c oder l = server, client und lokal client: Jeder Server hat intern eine s-Flag und jeder Client ein c-Flag. Cienten, die zum lokalen Server verbunden sind, haben ein l-Flag (kleines L). Diese 3 Flags sind jedoch fuer die Konfigurationsdatei unwichtig, da sie nur intern in der Funktion parseConfig vergeben werden. Und natuerlich auch, wenn ein neuer Socket erstellt wird.

Download

Share and Enjoy:
  • Twitter
  • del.icio.us
  • Google Bookmarks
  • Digg
  • Slashdot
  • StumbleUpon
  • Reddit

TheFox Perl , , , , , , , , , , , ,

  1. 10. Mai 2010, 09:20 | #1

    Super Tool,

    genau das, was ich gerade gebraucht habe. Ich musste auf die Schnelle Daten in einem TCP-Stream verändern und mit 2-3 Änderungen war alles erledigt.

    Danke und Grüße aus Düsseldorf

    Markus Peters

  1. Bisher keine Trackbacks
hacker Powered by Gentoo Linux Blogverzeichnis - Blog Verzeichnis bloggerei.de Suchmaschinenoptimierung mit Ranking-Hits