1
부스트 asio의 async_read_until 사용에 대한 일반적인 질문이 있습니다. 설명서에는 처리기가 호출 될 때 버퍼 내에 더 많은 데이터가있을 수 있다고 나와 있습니다. 이 문제를 해결하고 시퀀스 조건이 일치 한 후 소켓에서 바이트를 소비하지 않도록 버퍼를 중지 할 수있는 방법이 있습니까?부스트 asio async_read_until 일치 조건에서 읽기 중지
부스트 asio의 async_read_until 사용에 대한 일반적인 질문이 있습니다. 설명서에는 처리기가 호출 될 때 버퍼 내에 더 많은 데이터가있을 수 있다고 나와 있습니다. 이 문제를 해결하고 시퀀스 조건이 일치 한 후 소켓에서 바이트를 소비하지 않도록 버퍼를 중지 할 수있는 방법이 있습니까?부스트 asio async_read_until 일치 조건에서 읽기 중지
Q. 방식 때문에 네트워크 트래픽의, 아니 직접
를 해결하기 위해 어떤 방법이 작동합니다 (그것의 패킷 지향).
물론 송신자가 적극적으로이를 보장한다면 프로토콜 경계에서 문제가 발생하지만 스트림 프로토콜에서는 예외적입니다.
Q. 및 서열 조건이 일치 된 후 소켓 오른쪽 바이트 소비로부터 버퍼를 중지
?
아니요,하지만 버퍼를 소비하지 않아도됩니다. 그래서 예.
boost::asio::streambuf sb;
auto bytes = boost::asio::read_until(socket, sb, "\r\n\r\n");
std::istream is(&sb);
std::string line;
while (getline(is, line) && !line.empty()) {
std::cout << "Received: '" << line << "'\n";
}
// sb still contains un-consumed data, if any
단순히 이후에 같은
streambuf
읽기 사용하고 당신을 위해 "스트림 위치를"관리합니다 :이 유효한 패턴이다.