在boost :: asio :: tcp中,我可以使用boost::asio::read
只读取tcp套接字的一部分。
boost::system::error_code error;
boost::asio::streambuf len_buffer;
size_t n = boost::asio::read(tcp_socket, len_buffer, boost::asio::transfer_exactly(1), error);
但boost::asio::read
功能不适用于udp::socket
。
那么如何读取udp套接字的某些部分,例如,只读取套接字流的1个字节?
我检查了qazxsw poi函数,但它不接受长度参数。 udp socket是否支持部分读取?
确切地说,receive()
的第三个参数不是长度参数,它是完成条件。如果此条件为真,则中止读/写操作。 read
不使用此参数,因为在使用udp::socket::receive
时它是有意义的。 streambuf
有3次超载,没有一次采取udp::socket::receive
。所有这些都需要存储传入数据的streambuf
。创建缓冲区来存储数据时,需要提供此缓冲区的大小。此大小确定将读取多少字节。因此,在您的情况下,您需要准备1字节容量的缓冲区。有很多方法可以做到,MutableBufferSequence
。
buffer