2016-10-24 5 views
0

태그를 사용하지 않고 "가능한 빠름"으로 올바르게 쓰지만, 데이터의 쓰기가 안되는 큰 메모리 버퍼를 구축하지 않고 어떻게 OS 소켓에 쓰기 진행 상황을 추적합니까? socket:didWritePartialDataOfLength:tag: 이벤트를 사용해야합니까?GCDAsyncSocket을 쓰는 방법을 조절 하시겠습니까?

소켓이 일부 데이터를 기록했지만 아직 전체 쓰기를 완료하지 않은 경우 호출됩니다. 진행 막대를 업데이트하는 등의 작업에 사용될 수 있습니다.

GCDAsyncSocket은 더 많은 메모리를 할당하지 않으므로 새 쓰기 호출에서 정지됩니까?

얼마나 자주 발사합니까? 새 쓰기를 대기열에 넣기 전에 이미 메모리에 대기중인 것이 얼마인지를 어떻게 알 수 있습니까?

답변

0

내 질문에 답하면 실제로 실험하는 것으로 충분하다는 것이 밝혀졌습니다.

최대 청크 2 개를 쓰고 청크가 작성된 GCDAsyncSocket에서 콜백을 받으면 새 청크를 작성하십시오. 부분 데이터 콜백을 사용하여 세밀한 그레인 진행 상황을 추적하십시오. 태그를 사용하여 청크의 번호를 매 깁니다. 그게 전부 야.