Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Решить проблему: простой веб сервер на основе boost::asio падает именно при первом же обращении к серверу - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Раздельная компиляция: как быть, если код не компилируется, так как два файла подключают друг друга? http://www.cyberforum.ru/cpp-beginners/thread1799498.html
Доброго времени суток. У меня есть какой-нибудь x.h: #include "y.h" class A { vector<B*> v; } и y.h:
C++ Программа, которая "переворачивает" последовательность положительных целых чисел На вход подаются целые, положительные числа через пробел. Программа считывает их до тех пор, пока не встретит в последовательности 0. Т.е. 0 это остановка чтения. Цель - вывести эту... http://www.cyberforum.ru/cpp-beginners/thread1799476.html
Реализовать функцию без параметров, определяющую количество символов, отличных от пробела C++
Задача: Описать функцию next() без параметров, которая считывает с клавиатуры первый символ, отличный от пробела, и объявляет его своим значением. Использовать эту функцию для подсчета количества...
Нюансы синтаксиса: что означает запись for ( ; ; ) ? C++
Встретила в программе такую строку: for ( ; ; ) { // some code } Кто может объяснить по какому принципу она работает, не совсем понимаю. Гуглила - ничего похожего не смогла найти
C++ _BLOCK_TYPE_IS_VALID(pHead->nBlockUse) http://www.cyberforum.ru/cpp-beginners/thread1799412.html
Нужна помощь гуру. Искать ошибку тут в коде ненужно, сам все нашёл, мне нужно объяснение почему так происходит, увы нигде не нашёл внятного ответа. Ниже написана простенькая реализация класса, в ней...
C++ Из одного статического массива получить три динамических Всем привет. Возникла сложность с такой задачей. Написать функцию, которая получает указатель на статический массив и его размер. Функция распределяет положительные, отрицательные и нулевые элементы... подробнее

Показать сообщение отдельно
Undisputed
162 / 93 / 19
Регистрация: 10.06.2014
Сообщений: 1,303
Завершенные тесты: 3

Решить проблему: простой веб сервер на основе boost::asio падает именно при первом же обращении к серверу - C++

27.08.2016, 19:06. Просмотров 333. Ответов 17
Метки (Все метки)

Запускаю код указанный ниже, но при обращении на айпи и порт который слушает сервер, сервер падает (debug error, abord)
А браузер пишет 127.0.0.1 refused to connect.

Что я делаю не так? Программа слушает 2011 порт, обращаюсь из браузера так: 127.0.0.1:2011
Возвращаю корректный ответ клиенту по протоколу HTTP

До запроса к серверу он нормально живет и слушает порт 2011 (проверял). Падает именно при первом же обращении к серверу

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#include "stdafx.h"
#include <iostream>
#include <boost/asio/impl/src.hpp>
#include <boost/asio/ip/tcp.hpp>
#include <boost/asio/write.hpp>
#include <boost/thread.hpp>
 
typedef boost::shared_ptr<boost::asio::ip::tcp::socket> socket_ptr;
 
std::string response = "HTTP/1.1 200 OK\r\nContent-Type: text/html; charset=utf-8\r\nContent-Length:2\r\n\r\n ok";
 
void client_session(socket_ptr sock)
{
   while (true)
   {
    char data[512];
    size_t len = sock->read_some(boost::asio::buffer(data));
    if (len > 0)
        boost::asio::write(*sock, boost::asio::buffer(response, sizeof(response)));//возвращаю ответ здесь
    }
}
 
int main()
{
   boost::asio::io_service service;
   boost::asio::ip::tcp::endpoint ep(boost::asio::ip::tcp::v4(), 2011);
   boost::asio::ip::tcp::acceptor acc(service, ep);
   while (true)
   {
    socket_ptr sock(new boost::asio::ip::tcp::socket(service));
    acc.accept(*sock);
    boost::thread(boost::bind(client_session, sock));
   }
 
    return 0;
}
Добавлено через 8 минут
Убрал while(true) в функции client_session, теперь страница отображается в браузере но возвращаемый ответ с сервера все равно не виден. Тело ответа пустое

Добавлено через 3 минуты
Ура! Теперь ответ возвращается. Нужно было вместо sizeof(response) написать response.length();
Но несмотря на то что запрос/ответ проходит успешно сервер все равно падает после первого обращения!
В чем может быть причина?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru