[Boost] boost 라이브러리 asio 상세 설명 6 - boost::asio:::error의 용법 분석

2115 단어

1. 개요

일반적으로 우리가 error를 수신하는 데 사용하는 유형을 만드는 것은 대부분 다음과 같다.
boost::system::error_code error
우리는 이 유형으로 함수에서 발생하는 오류를 받아들인다. 예를 들어 다음과 같다.
socket.connect(endpoint, error);
연결이 실패하면 오류 형식이 error에 저장됩니다. 예를 들어 호스트 연결 실패가 이러한 오류를 되돌릴 수 있습니다.
boost::asio::error::host_not_found;
if(error)를 통해 error를 감지한 후 이상을 던집니다.
throw boost::system::system_error(error);
주의해야 할 것은 우리의 error가 시스템으로 전환되었다는 것이다_오류가 발생했습니다.
표시 오류가 간단합니다. std::cout

2. 비동기식 호출

발생하는 이상 error의 전달은 문제입니다. 비동기적으로 즉시 되돌아오고 국부 변수는 소각되기 때문입니다.boost::asio::placeholders::error, 이상한 상태를 저장합니다. 이렇게 하면 비동기 호출을 사용할 때
socket::async_write_some 때 boost:::system::error_코드 오류입니다. boost::asio::placeholders::error를 매개 변수로 사용하면 됩니다.
같은 이치, 우리sync_write_some는 읽기와 쓰기 데이터의 크기를 되돌려야 합니다. 기쁜 것은 boost::asio::placeholders:bytes_transferred는 매개 변수로 데이터 크기를 저장할 수 있습니다.
인스턴스는 다음과 같습니다.
boost::asio::async_write(socket_,
                         boost::asio::buffer(message_),
                         boost::bind(&tcp_connection::handle_write, shared_from_this(),
                         boost::asio::placeholders::error,
                         boost::asio::placeholders::bytes_transferred));
참고수첩에 명확하게 나와 있는데 다음 두 종류는 비동기적으로 bind를 사용할 때 디자인한 것이다.
boost::asio::placeholders::error
boost::asio::placeholders::bytes_transferred

3. 동기화 호출

그럼요. boost::system:::error_코드 error는 또한 유용합니다. 동기화할 때 우리는 그것을 매개 변수로 사용합니다.예:
boost::system::error_code error;
size_t len = socket.read_some(boost::asio::buffer(buf), error);
마찬가지로 비동기적으로 호출되는 리셋handle에서도 그것을 매개 변수로 사용한다.
void handle_write(const boost::system::error_code& /*error*/,
                  size_t /*bytes_transferred*/)
{
}

4. 요약

비동기적으로 boost::asio::placeholders::error,boost:asio::placeholders::bytes_transferred
동기화는 boost::system::error_code

좋은 웹페이지 즐겨찾기