Gast Geschrieben 20. Februar 2012 Teilen Geschrieben 20. Februar 2012 Hallo, ich habe da dieses eine Problem. Ich versuche seit einigen Tagen mich mit Perl Testing auseinander zu setzen. Eine mir gestellte Aufgabe war es einen einfach Webserver testen. Kann mir jemand einen Tipp geben bzw. helfen ? Danke. Webserver Quellcode: #!c:\Perl\bin\perl.exe #package server; use strict; use Socket; use IO::Socket; our $port; #server port our $content; #content type our $server; #server our $client; #server accept our %req = (); #request results our %data = (); #method and status data our $root_folder = 'c:\perlscripts\public_html'; #root http folder server(); #start server client(); #start client sub server { $port = 5555; $server = IO::Socket::INET->new ( Proto => 'tcp', LocalPort => $port, Listen => SOMAXCONN, Reuse => 1); $server or die "Unable to create server socket: $!"; print ("\nserver created, port: " . $port . "\n\n"); } #sub server end sub client { while ($client = $server->accept()) { $client->autoflush(1); $/ = Socket::CRLF; while (<$client>) { chomp; print STDERR ; if (/^\s*(\w+)\s*([^\s]+)\s*HTTP\/(\d.\d)/) { $req{method} = $1; ($req{url} = $2) =~ tr/^\//\\/; $req{httpv} = $3; } elsif (/^$/) { last; } } if ( defined ($req{method}) && defined ($req{url}) && defined ($req{httpv}) ) { unless ($req{url} =~ /\.\./) { if ($req{url} =~ /.html$/i) { $content = "text/html"; } elsif ($req{url} =~ /.jpg$/i) { $content = "image/jpg"; } elsif ($req{url} =~ /.jpeg$/i){ $content = "image/jpeg"; } elsif ($req{url} =~ /.gif$/i) { $content = "image/gif"; } if ($req{method} eq "GET" or $req{method} eq "POST") { $data{method} = $req{method}; } else { print STDERR ("\nno request method found"); $data{method} = "ERROR"; last; } print $client "HTTP/1.0 200 OK", Socket::CRLF; print $client "Content-type: $content", Socket::CRLF; print $client Socket::CRLF; print $client "<HTML> <HEAD> <Title>einfache Testseite</Title> <H1>Meine erste Webseite!</H1> <H5>Diese ist so einfach,<H5> <H6>da braucht man garnicht hinsehen.</H6> </HEAD> <BODY> </BODY> </HTML>"; $data{stat} = "202"; close(FILE); } else { print $client "HTTP/1.0 404 Not Found", Socket::CRLF; print $client Socket::CRLF; print $client "<HTML> <HEAD> <H5>Datei kann nicht geöffnet werden</H5> </HEAD> <BODY> 404 Not Found </BODY> </HTML>"; $data{method} = "ERROR"; $data{stat} = "404"; } ### unless loop end } else { $data{method} = "ERROR"; $data{stat} = "404"; } ### if-defined loop end print("\n" . $root_folder . $req{url} . "\n"); foreach my $key (keys(%data)) { print("$key = $data{$key}\n"); } close $client; print STDERR ("\n"); } ### while client loop end } #sub client end #####EOF##### Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
bigvic Geschrieben 20. Februar 2012 Teilen Geschrieben 20. Februar 2012 Es fehlt eine Fehlerbeschreibung. Was willst du machen und was ist das Problem? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
lilith2k3 Geschrieben 21. Februar 2012 Teilen Geschrieben 21. Februar 2012 Und ein paar Codetags wären auch ganz nett ... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Gast Geschrieben 21. Februar 2012 Teilen Geschrieben 21. Februar 2012 Also im Moment wird einfach nur eine extrem Simple Seite ausgegeben. Ich möchte während der Server läuft einen Test laufen lassen der: 1. die Variablen ausliest und auf Richtigkeit überprüft 2. wenn 1. funktioniert, dann einen Header an den Server senden und dessen Antwort überprüfen. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.