Создание простого TCP-сервера на основе примеров , но до сих пор не понимаю, как создать сокет, который читал бы некоторое количество байтов, и если их будет недостаточно буду ждать. Мне нужно, чтобы это НЕ было асинхронной операцией.
#include
#include
#ifdef _WIN32
#include "Windows.h"
#endif
using namespace boost::asio::ip;
using namespace std;
int main(){
int m_nPort = 12345;
boost::asio::io_service io_service;
tcp::acceptor acceptor(io_service, tcp::endpoint(tcp::v4(), m_nPort));
cout << "Waiting for connection..." << endl;
tcp::socket socket(io_service);
acceptor.accept(socket);
cout << "connection accepted" << endl;
try
{
socket.send(boost::asio::buffer("Start sending me data\r\n"));
}
catch(exception &e)
{
cerr << e.what() << endl; //"The parameter is incorrect" exception
}
}
Как получить 10000 байт и делать это либо до тех пор, пока не прибудут все 10000, ИЛИ тайм-аут 1000 миллисекунд и не сгенерирует исключение?