Witam. Mam problem z serwerem w booscie, tzn. to jest kod:
Serwer:
int main()
{
try
{
boost::asio::io_service IO_Service;
tcp::acceptor Acceptor(IO_Service, tcp::endpoint(tcp::v4(), PORT));
while (true)
{
tcp::socket Socket(IO_Service);
Acceptor.accept(Socket);
char Data[1024];
memset(Data, 0, 1024);
boost::system::error_code Error;
size_t Lenght = Socket.read_some(boost::asio::buffer(Data), Error);
std::cout << Data << std::endl;
if (Error == boost::asio::error::eof)
break;
else if (Error)
std::cout << "Error - " << Error << std::endl;
}
}
catch (std::exception& Error)
{
std::cout << Error.what() << std::endl;
}
return 0;
}
Client:
int main()
{
boost::asio::io_service IO_Service;
boost::asio::ip::tcp::socket Socket(IO_Service);
boost::asio::ip::tcp::resolver Resolver(IO_Service);
boost::asio::connect(Socket, Resolver.resolve({ IP, PORT }));
boost::asio::write(Socket, boost::asio::buffer("123", strlen("123")));
boost::asio::write(Socket, boost::asio::buffer("456", strlen("456")));
}
W outpucie serwera dostaję "123456" zamiast najpierw "123" i w następnym obrocie "456". Mógłby ktoś wytłumaczyć czemu tak się dzieje? Coś robię źle czy tak po prostu już jest? Jak mam to oddzielić bez bawienia się w dzielenie stringów?
I jeszcze jedno, czym różnią się te funkcje?
boost::asio::read(Socket, boost::asio::buffer(Data, Lenght));
size_t Lenght = Socket.read_some(boost::asio::buffer(Data), Error);