我正在尝试使用Perl编写一个非常简单的HTTP服务器来提供单个html文件。然而,几乎每次我去网站时,我都会得到一个"连接重置"错误(但它确实在5%的时间内工作)。我已阅读this post,但我无法做任何事情。
我开始使用的服务器here,但我正在尝试将其修改为
a)读入文件而不是使用硬编码的html和
b)使用每个新的HTTP请求读取此文件,以便通过刷新看到更改。
这是我的代码:
#!/usr/bin/env perl
use strict;
use warnings;
use Socket;
my $port = 8080;
my $protocol = getprotobyname( "tcp" );
socket( SOCK, PF_INET, SOCK_STREAM, $protocol ) or die "couldn't open a socket: $!";
## PF_INET to indicate that this socket will connect to the internet domain
## SOCK_STREAM indicates a TCP stream, SOCK_DGRAM would indicate UDP communication
setsockopt( SOCK, SOL_SOCKET, SO_REUSEADDR, 1 ) or die "couldn't set socket options: $!";
## SOL_SOCKET to indicate that we are setting an option on the socket instead of the protocol
## mark the socket reusable
bind( SOCK, sockaddr_in($port, INADDR_ANY) ) or die "couldn't bind socket to port $port: $!";
## bind our socket to $port, allowing any IP to connect
listen( SOCK, SOMAXCONN ) or die "couldn't listen to port $port: $!";
## start listening for incoming connections
while( accept(CLIENT, SOCK) ){
open(FILE, "<", "index.html") or die "couldn't open \"index.html\": $!";
while(<FILE>) {
print CLIENT $_;
};
close FILE;
close CLIENT;
}
感谢任何帮助,谢谢。
答案 0 :(得分:0)
您无法从客户端读取HTTP请求,即在仍有数据要读取时关闭连接。这可能会导致RST。