ich habe ein kleines Problem, und zwar liest boost::asio::read_until Bytes bis zu einem bestimmten Delimiter, es kann aber durchaus vorkommen das mehr Daten im Receive Buffer geschrieben werden, als der Delimiter endet.
Somit habe ich mir etwas geschrieben, um alle vollständigen Packets von dem Receive Buffer zu bekommen, dass klappt auch soweit.Quote:
After a successful read_until operation, the streambuf may contain additional data beyond the delimiter. An application will typically leave that data in the streambuf for a subsequent read_until operation to examine.
Das Problem hierbei ist aber, wenn ein unvollständiges Packet am Ende steht, versucht er es zu verarbeiten und anschließend zu löschen.(logisch warum)
Es gibt keine 0 terminierenden Packets, bevor jemand fragt. ;o
Code:
std::string packet_sequence;
std::istream stream(&_bufReceive);
while(!std::getline(stream, packet_sequence, static_cast<char>(buf_delim)).eof())
{
_packetHandler->process(_packetEncoding->decryptLoginPacket(packet_sequence));
_bufReceive.consume(packet_sequence.size());
}
Code:
request_login <user> <password> 0xFF
Code:
request_login <user> <password> 0xFF request_something <so
Packet (second call):
Code:
mething> 0xFF






