Как сказал Саймон, вы не можете сделать это с boost::asio::read()
(или boost::asio::async_read()
).Однако для read()
вы можете вызвать native_handle()
в сокете, чтобы получить дескриптор сокета, а затем использовать ::recvmsg()
с флагом MSG_PEEK
.Аналогично, вы можете вызвать async_read()
с null_buffers()
в качестве буфера приема, а затем использовать трюк native_handle()
/ ::recvmsg()
для просмотра данных.Прочтите этот раздел документации повышения, чтобы узнать, как использовать null_buffers ().