2011-05-03 2 views
2

다음과 같은 문제가 있습니다.부스트 async_read_some/async_receive는 MSG_PEEK가 항상 켜져있는 것처럼 동작합니다.

tcp 소켓에서 async_receive를 시작합니다.
일부 데이터에서 콜백이 호출되었습니다.
소켓에서 다른 비동기 수신을 시작합니다.
콜백이 호출되었지만 버퍼에는 이전 호출의 데이터도 포함됩니다. MSG_PEEK 플래그로 recv를 호출하는 것처럼 동작하지만, 그런 일은하지 않았습니다.

나는 메시지 플래그가 argument = 0이고 버전이 동일한 효과를 가진 버전을 호출하려고했습니다.

이 동작을 어떻게 비활성화 할 수 있습니까? 각 성공적인 비동기 처리기 호출 후 커널 버퍼에서 데이터를 먹는 첫 번째 호출 싶습니다.

미하이

+1

코드없이 대답 할 수 없다면, 우리는 async_read에 넘기는 버퍼를 어떻게 처리해야 하는지를 알아야합니다. –

답변

1

문제가 해결되었습니다. 그것은 보내기 문제였습니다. async_write에 전달 된 버퍼 벡터를 재사용하고있었습니다.

+0

이것은 동일한 문제를 경험하고 검색 엔진을 통해 질문을 찾을 수있는 다른 사용자에게는 매우 유용한 대답이 아닙니다. 귀하의 질문에 대한 내 의견을 나타냅니다, 귀하의 코드로 질문을 업데이 트해야합니다 다음이 답변에 솔루션을 넣어. –

관련 문제