Я скопировал файлы (с "HTTP-сервера") из это руководство, но кажется, что оно не работает. Я запустил приложение с 0.0.0.0 5000 .
, но когда я пытаюсь подключиться к странице localhost:5000, я всегда получаю 404 Not Found. Что сделать, чтобы он запустился?
Пример Boost http-сервера не работает?
Ответы (1)
Если вы получаете HTTP-ответ с кодом состояния 404, то HTTP-сервер работает, обрабатывает запрос и отправляет ответ. Если бы сервер не работал, ответ HTTP не возвращался бы. Браузер может предоставить дополнительные сведения об ошибке:
$ lsof -i tcp:5000 # verify nothing is listening to port 5000
$ curl http://localhost:5000/
curl: (7) Failed to connect to localhost port 5000: Connection refused
Убедитесь, что путь, запрашиваемый в HTTP-запросе, существует в каталоге, соответствующем параметру doc_root
, указанному при запуске сервера. Также имейте в виду, что если путь запроса заканчивается на /
, сервер добавит к пути index.html
. Как показано в code, если серверу не удается открыть файл, указанный путем, сервер ответит HTTP-ответом с кодом состояния 404.
// Open the file to send back.
std::string full_path = doc_root_ + request_path;
std::ifstream is(full_path.c_str(), std::ios::in | std::ios::binary);
if (!is)
{
rep = reply::stock_reply(reply::not_found);
return;
}
person
Tanner Sansbury
schedule
27.02.2015
Он возвращает:
<html><head><title>Not Found</title></head><body><h1>404 Not Found</h1></body></html>
- person sop; 02.03.2015
@sop понял. Если бы сервер не работал, то ответа HTTP не было бы, так как он не работал бы на более низком уровне, таком как транспортный уровень TCP. Убедитесь, что
doc_root
содержит файлы, запрашиваемые в HTTP-запросе.
- person Tanner Sansbury; 02.03.2015
Где находится doc_root?
- person sop; 03.03.2015
doc_root
— это третий аргумент, предоставляемый программе при запуске: https://github.com/boostorg/asio/blob/boost-1.57.0/example/cpp11/http/server/main.cpp#L23.
- person Tanner Sansbury; 03.03.2015
какие файлы запрашиваются?
- person sop; 03.03.2015
@sop Пожалуйста, обновите свой вопрос, добавив ответы на вопросы в комментариях.
- person Tanner Sansbury; 03.03.2015
127.0.0.1
вместо0.0.0.0
? - person Sam Miller   schedule 27.02.2015