Синхронная обработка запросов через boost::asio

201
02 февраля 2018, 22:12

Первая итерация срабатывает превосходно, ввожу строку - получаю ответ, а второй раз как бы "зависает" - т.е. и ответ не приходит и не понятно отправилось ли сообщение.

#include <iostream>
#include <boost/array.hpp>
#include <boost/asio.hpp>
#include <boost/bind.hpp>
using namespace std;
using boost::asio::ip::tcp;
enum { 
     max_length = 1024
};
int main(int argc, char* argv[])
{
    boost::asio::io_service io_service;
    boost::asio::ip::tcp::endpoint endpoint (boost::asio::ip::address::from_string("192.168.0.1"), 3333);
    boost::asio::ip::tcp::socket sock(io_service);
    boost::system::error_code error_code;
    sock.open(boost::asio::ip::tcp::v4());
    sock.connect(endpoint, error_code);
    if (error_code)
    {
            throw std::runtime_error("Connecting to server FAILED.");
    }
    std::cout << "Connected to " << sock.remote_endpoint().address().to_string() << std::endl;
    for (int i=0;i<2;i++){
            std::cout << "Enter message: ";
            char request[max_length];
            std::cin.getline(request, max_length);
            size_t request_length = strlen(request);
            sock.send(boost::asio::buffer(request, request_length));
            char reply[max_length];
            size_t reply_length = sock.receive(boost::asio::buffer(reply, 1024), 0, error_code);
            if (error_code)
            {
                    throw std::runtime_error("Error while receiving bytes.");
            }
            std::cout << "Reply: ";
            std::cout.write(reply, reply_length);
            std::cout << "\n";
    }
  return 0;
}

Почему зависает непонятно.

Цель: синхронно опрашивать устройство по TCP сокетам.

READ ALSO
миллион исходящих TCP-соединений [требует правки]

миллион исходящих TCP-соединений [требует правки]

"C++ Windows" миллион исходящих TCP-соединений как обойти ограничени 65535 ?

199
Задействовать нужное кол-во IP адресов

Задействовать нужное кол-во IP адресов

C++ как подключить к программе несколько ipЧто бы расширить локальные порты 2*65535

189
Как применить @Autowired к WebDriver?

Как применить @Autowired к WebDriver?

Использую spring и selenium в одном проекте, и приходится оборачивать WebDriver вот таким некрасивым способом:

162
Симплекс метод реализация [требует правки]

Симплекс метод реализация [требует правки]

помогите пожалуйста с кодом очень нужно

169