Hallihallo,
Zu Demo- und Testzwecken habe ich mal einen kleinen (blockenden) Webserver in Perl geschrieben. Ich verwende das Modul IO::Socket::INET, um nicht ganz von vorne anzufangen. Wenn sich der Client verbindet, bekomme ich ja mit accept() die Repräsentation des Client-Sockets. Den kann ich auf weitere Eigenschaften abfragen und Nutzen, um per print die Response zu schreiben.
Ich habe eine kleine HTML-Seite geschrieben, die per Formular einen Request auf den Server macht. Wenn ich zu Testzwecken den reinkommenden (POST)-Request ausgebe, bekomme ich immer nur
zu sehen. Soweit so gut, aber wo bleiben die weiteren Daten, die der Browser mitschickt? Also Agent, Content-length, Content-type etc. und die Parameter aus dem HTML-Formular? Ich weis nicht, wie ich den Socket-Descriptor ansprechen muss, um die gesamte HTTP-Nachricht zu sehen. Leider finde ich auch in den Perl-Dokus keine genauen Beschreibungen der Attribute des Socket-Descriptors - habe mir das Meiste mühsam aus Beispielen ergoogelt
Perldoc ging nicht weiter ins Detail und verweist auf ein Beispielprogramm, welches ich nicht finde.
Kann mir jemand einen Tipp geben (konkretes Beispiel oder Link auf das RTFM )? Hier der Ausschnitt aus dem Programm:
...
while (my $conn = $socket->accept()) {
my $request = <$conn>;
chomp($request);
print "[INFO]\t Request received from host " . $conn->peerhost .
" on port " . $conn->peerport . "\n";
print "[INFO]\t Request: $request\n";
#&response_simple($conn);
close($conn);
}
...
Ausgabe in der Konsole (STDOUT):
[INFO] Created server socket on port 6675
[INFO] Request received from host 127.0.0.1 on port 37338
[INFO] Request: POST / HTTP/1.1
IO::Socket::INET=GLOB(0x817d20c)
DANKE+Gruß,
Timo