"2 단계"async_read with boost asio

마리우스 헤르 조그

boost asio를 사용하여 TCP / IP 스택 위에 프로토콜을 구현하고 싶습니다. 프로토콜의 길이-PDU는 처음 6 바이트에 포함됩니다. 이제 asio에서 제공하는 동기 읽기 방법을 사용하여 처음 6 바이트를 정확히 읽고 길이 n을 계산 한 다음 정확히 n 바이트를 읽어 전체 PDU를 얻을 수 있습니다.

하지만 비동기 메서드를 사용하고 싶지만 asio 문서 예제 를 살펴보면 질문이 생깁니다. 저자는 소켓 멤버 함수 async_read_some ()을 사용하여 소켓에서 불확정 한 양의 데이터를 읽습니다. 전체 PDU를 받기 위해 첫 번째 단락에 설명 된 "2 단계"절차를 어떻게 적용합니까? 아니면 내 문제에 대한 또 다른 권장 솔루션이 있습니까?


마이크 시모어

async_read고정 된 양을 읽으 려면 비 멤버 함수 사용하십시오 .

예를 들어, std::vector버퍼에 a 또는 이와 유사한 것을 사용합니다 .

// read the header
buffer.resize(6);
async_read(socket, boost::asio::buffer(buffer),
    [=](const boost::system::error_code & error, size_t bytes){
        if (!error) {
            assert(bytes == 6);

            // read the payload
            buffer.resize(read_size(buffer));
            async_read(socket, boost::asio::buffer(buffer),
                [=](const boost::system::error_code & error, size_t bytes){
                     if (!error) {
                          // process the payload
                     }
                });
        }
    });

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

"2 단계"async_read with boost asio

분류에서Dev

boost :: asio :: async_read 줄 바꿈에서 파일 끝 오류 반환

분류에서Dev

asio async_read_until 다음에 async_read 부스트

분류에서Dev

boost :: beast에서 async_read () 결과를 얻는 방법

분류에서Dev

Boost :: Asio-read 또는 read_until?

분류에서Dev

boost :: asio :: read () 블록을 영원히

분류에서Dev

thread_pull 및 boost 1.54를 사용하는 boost :: async_read의 EOF

분류에서Dev

Create timer with boost::asio

분류에서Dev

boost :: asio :: async_read_some에 전달 된 콜백은 boost :: asio :: read_some이 데이터를 반환하는 사용시 호출되지 않았습니다.

분류에서Dev

boost :: asio :: async_read_some에 전달 된 콜백은 boost :: asio :: read_some이 데이터를 반환하는 사용시 호출되지 않았습니다.

분류에서Dev

boost :: asio :: spawn yield as callback

분류에서Dev

asio :: async_read와 함께 사용할 올바른 패턴은 무엇입니까?

분류에서Dev

boost :: asio :: read는 boost : asio :: write가 Java 소켓으로 데이터를 보내는 것을 방지합니다.

분류에서Dev

boost :: asio async_connect는 취소 할 수 없습니까?

분류에서Dev

C ++ boost :: asio 및 std :: async에 대한 질문이 있습니다.

분류에서Dev

boost :: asio :: async_write 함수의 용도는 무엇입니까?

분류에서Dev

Boost ASIO UDP client async_receive_from calls handler even when there are no incoming messages

분류에서Dev

C ++ Boost ASIO async_send_to 메모리 누수

분류에서Dev

2 단계 튄 TCL

분류에서Dev

boost :: asio asyn_read with timer가 좋은 생각입니까?

분류에서Dev

boost :: asio :: read를 사용하여 cout에 직접 쓰기

분류에서Dev

boost :: asio의 Valgrind 오류

분류에서Dev

Taking the port from Boost Asio socket

분류에서Dev

`boost :: asio :: streambuf`에서 파생

분류에서Dev

boost asio deadline_timer async_wait(N seconds) twice within N seconds cause operation canceled

분류에서Dev

Boost.Asio : socket :: close가 aysnc_read_some을 취소하지 않음

분류에서Dev

OpenSSH 2 단계 인증

분류에서Dev

2 단계 조인 Sqlalchemy

분류에서Dev

2 단계 클러스터

Related 관련 기사

  1. 1

    "2 단계"async_read with boost asio

  2. 2

    boost :: asio :: async_read 줄 바꿈에서 파일 끝 오류 반환

  3. 3

    asio async_read_until 다음에 async_read 부스트

  4. 4

    boost :: beast에서 async_read () 결과를 얻는 방법

  5. 5

    Boost :: Asio-read 또는 read_until?

  6. 6

    boost :: asio :: read () 블록을 영원히

  7. 7

    thread_pull 및 boost 1.54를 사용하는 boost :: async_read의 EOF

  8. 8

    Create timer with boost::asio

  9. 9

    boost :: asio :: async_read_some에 전달 된 콜백은 boost :: asio :: read_some이 데이터를 반환하는 사용시 호출되지 않았습니다.

  10. 10

    boost :: asio :: async_read_some에 전달 된 콜백은 boost :: asio :: read_some이 데이터를 반환하는 사용시 호출되지 않았습니다.

  11. 11

    boost :: asio :: spawn yield as callback

  12. 12

    asio :: async_read와 함께 사용할 올바른 패턴은 무엇입니까?

  13. 13

    boost :: asio :: read는 boost : asio :: write가 Java 소켓으로 데이터를 보내는 것을 방지합니다.

  14. 14

    boost :: asio async_connect는 취소 할 수 없습니까?

  15. 15

    C ++ boost :: asio 및 std :: async에 대한 질문이 있습니다.

  16. 16

    boost :: asio :: async_write 함수의 용도는 무엇입니까?

  17. 17

    Boost ASIO UDP client async_receive_from calls handler even when there are no incoming messages

  18. 18

    C ++ Boost ASIO async_send_to 메모리 누수

  19. 19

    2 단계 튄 TCL

  20. 20

    boost :: asio asyn_read with timer가 좋은 생각입니까?

  21. 21

    boost :: asio :: read를 사용하여 cout에 직접 쓰기

  22. 22

    boost :: asio의 Valgrind 오류

  23. 23

    Taking the port from Boost Asio socket

  24. 24

    `boost :: asio :: streambuf`에서 파생

  25. 25

    boost asio deadline_timer async_wait(N seconds) twice within N seconds cause operation canceled

  26. 26

    Boost.Asio : socket :: close가 aysnc_read_some을 취소하지 않음

  27. 27

    OpenSSH 2 단계 인증

  28. 28

    2 단계 조인 Sqlalchemy

  29. 29

    2 단계 클러스터

뜨겁다태그

보관