summaryrefslogtreecommitdiff
path: root/perl_http_server
diff options
context:
space:
mode:
authorstderr64 <stderr64@null.net>2024-10-24 23:04:43 +0300
committerstderr64 <stderr64@null.net>2024-10-24 23:04:43 +0300
commitab607fc39b6dfc766f7481c33e5f1cf35a2f55d9 (patch)
tree56317bc3756fa1439f748fda422996c526a76b14 /perl_http_server
downloadexperiments-ab607fc39b6dfc766f7481c33e5f1cf35a2f55d9.tar.gz
experiments-ab607fc39b6dfc766f7481c33e5f1cf35a2f55d9.tar.zst
Recreated repository
Diffstat (limited to 'perl_http_server')
-rwxr-xr-xperl_http_server/server.pl40
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 );