diff options
Diffstat (limited to 'perl_http_server')
-rwxr-xr-x | perl_http_server/server.pl | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/perl_http_server/server.pl b/perl_http_server/server.pl new file mode 100755 index 0000000..3fe3035 --- /dev/null +++ b/perl_http_server/server.pl @@ -0,0 +1,40 @@ +#!/usr/bin/perl +use POSIX; +use IO::Socket; + +if ( scalar(@ARGV) < 2 ){ + print( "Usage: ".__FILE__." [IP] [port]\n" ); + exit( 0 ); +} + +my $resp = "HTTP/1.1 200 OK\r\nServer: perlhttp\r\nContent-Type: text/html\r\n\r\n<html><body><center><h1>Hi there</h1></body></html>"; + +my $ssock = IO::Socket->new( + "LocalHost" => $ARGV[0], + "LocalPort" => $ARGV[1], + "Listen" => 10, + "Blocking" => 1, + "Type" => IO::Socket::SOCK_STREAM, + "Domain" => IO::Socket::AF_INET, + "Proto" => "tcp", + "ReusePort" => 1, + "ReuseAddr" => 1 +) or die "Failed to create socket"; + +my $req = ""; +my $psock = ""; + +print( "Listening on http://".$ARGV[0].":".$ARGV[1]."\n" ); + +while ( $psock = $ssock->accept() ){ + print( "Request from ".$psock->peerhost()."\n" ); + $psock->recv( $req, 524288 ); + $psock->send( $resp ); + $psock->shutdown( SHUT_RDWR ); + $req = ""; +} + +undef $req; +undef $ssock; +undef $psock; +exit( 0 ); |