[Perl] index.html anzeigen lassen per Socket

Flacx

Mitglied
Thread Starter
Dabei seit
14.01.2013
Beiträge
28
Reaktionspunkte
0
Hi,

ich habe folgendes Problem: Ich habe ein Script geschrieben, welches sich zu einem Server verbinden soll (per Socket) und dort Aktionen ausführen kann.
Bisher habe ich nur die connect Funktion und die file Funktion. Bei eben jener verzweifele ich: Nach erfolgreichen connecten zu z.B: www.google.com 80 tcp versuche ich per file mir index.html anzeigen zu lassen. Ich
habe ein bisschen gegooglet und das HTTP GET Kommando gefunden. Passieren tut jedoch nichts.. Weiß jemand eine Lösung?
Danke schonmal,
Flacx

Der Code:
Code:
#!usr/bin/perl -wuse IO::Socket;
$input = " ";
if ($ARGV[0] eq "") {
            print "Enter IP or Server Adress: ";
            chomp ($ip = <STDIN>);
            print "Enter Port: ";
            chomp ($port = <STDIN>);
        } else {
            $ip = $ARGV[0];
            $port = $ARGV[1];
        }
        $protoc = "tcp";
        $socket = IO::Socket::INET -> new (
            PeerAddr => $ip,
            PeerPort => $port,
            Proto => $protoc
        ) or die "Could not connect to Server Address $ip on Port $port with Protocoll $protoc\n";
        print "Connected successfull to $ip $port $protoc\n";
}

while ($input ne "quit") {
    
    print "> ";
    chomp ($input = <STDIN>);
    
    if ($input eq "connect") {
    
        if ($ARGV[0] eq "") {
            print "Enter IP or Server Adress: ";
            chomp ($ip = <STDIN>);
            print "Enter Port: ";
            chomp ($port = <STDIN>);
        }
        
        $protoc = "tcp";
        $socket = IO::Socket::INET -> new (
            PeerAddr => $ip,
            PeerPort => $port,
            Proto => $protoc
        ) or die "Could not connect to Server Address $ip on Port $port with Protocoll $protoc\n";
        print "Connected successfull to $ip $port $protoc\n";
    } elsif ($input eq "file") {
    
        print "Filename (\"\" for index.html): ";
        chomp($file = <STDIN>);
        if ($file eq "") {
            $file = "index.html";
            print $socket "GET / HTTP /1.1\n\n";
            recv($socket, $msg, 2000, 0);
        } else {
            print $socket "GET $file HTTP /1.1\n\n";
            while ($line = <$socket>) {
                print $line;
            }
        }
    } elsif ($input eq "quit") {
        close($socket) or die "Failed to close Socket Connection";
        print "Successfully close Socket Connection\n";
    }
}
 
Zuletzt bearbeitet:
Zurück
Oben Unten