Я собираюсь создать простой HTTP-сервер, для которого я также создам несколько клиентов.Сейчас я тестирую мой простой сервер, созданный в Perl, используя HTTP :: Daemon с помощью браузера.
Мой код сервера выглядит следующим образом:
use HTTP::Daemon;
use HTTP::Status;
my $d = HTTP::Daemon->new(LocalPort => 80,
Listen => 20) || die;
print "Web Server started!\n";
print "Server Address: ", $d->sockhost(), "\n";
print "Server Port: ", $d->sockport(), "\n";
print "Please contact me at: <URL:", $d->url, ">\n";
while (my $c = $d->accept) {
print "received a request...\n";
while (my $r = $c->get_request) {
print "URI: " . $r->uri->path . "\n";
if ($r->method eq 'GET' and $r->uri->path eq "/") {
# remember, this is *not* recommended practice :-)
$c->send_file_response("http_daemon_test.pl");
}
else {
print "method: " . $r->method;
print " uri:" . $r->uri . "\n";
$c->send_error(RC_FORBIDDEN, "please do not try again")
}
}
$c->close;
undef($c);
}
В настоящее время моя проблема заключается в том, что этот серверработает правильно, когда я тестирую его на той же машине.Когда я пытаюсь получить доступ к серверу с другого компьютера в той же сети, сервер вообще не получает запрос.Я пропускаю обязательный (может быть простой? Я новичок!) Шаг, чтобы выставить сервер для внешнего мира?
Я ценю вашу помощь в этом отношении,
Обновление: ниже приведен пример вывода, который я получаю при запуске сервера:
Веб-сервер запущен!
Адрес сервера: 0.0.0.0
Порт сервера: 80
Пожалуйста, свяжитесь со мной по адресу:
получил запрос ...
получил запрос ...
URI: /
получил запрос ...
URI: /
получил запрос ...
получил запрос ...
URI: /
Последнее обновление:
Я понял, что проблема отличается от того, что я описал выше.В конце концов, я мог получить доступ к своему серверу с другого компьютера.Как видно из кода, я не создаю отдельный поток для выполнения запроса.Как ни странно, когда я получаю доступ к своему серверу из браузера, все запросы с других компьютеров будут задерживаться до тех пор, пока я не закрою браузер, с которого я изначально отправил запрос (и не получил ответ на запрос).Между тем, несколько запросов от одного и того же браузера успешно выполняются.Однако этого не происходит, когда я отправляю запросы от клиентов, написанных на Perl, с использованием библиотеки libwww-perl.
Как это приводит к первоначальной проблеме? Каждый раз, когда я хотел проверить своисервер, я сделал это сначала с той же машины, используя браузер.Затем я попытался получить доступ к серверу с другого компьютера, не закрывая браузер, с которым я изначально тестировал сервер;и, как и ожидалось, это не сработало.
Спасибо за ваши комментарии, ребята.