Первая итерация срабатывает превосходно, ввожу строку - получаю ответ, а второй раз как бы "зависает" - т.е. и ответ не приходит и не понятно отправилось ли сообщение.
#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 сокетам.
Виртуальный выделенный сервер (VDS) становится отличным выбором
"C++ Windows" миллион исходящих TCP-соединений как обойти ограничени 65535 ?
C++ как подключить к программе несколько ipЧто бы расширить локальные порты 2*65535
Использую spring и selenium в одном проекте, и приходится оборачивать WebDriver вот таким некрасивым способом: