2012-10-08 11 views
0

배경 : iPad 앱을 스트리밍하기 위해 얼랭으로 작성된 맞춤 HTTP 서버가 있습니다. NSURLConnection - HTTP 내용을 소비하는 표준 높은 수준의 Apple 방식을 사용하고있었습니다. 그러나 데이터의 작은 덩어리가 버퍼링되어 문제가 발생하여 즉시 코드로 전달되지 않아 CFNetwork로 전환해야했습니다.내 HTTP 서버의 출력이 잘못되었습니다. 어떻게 디버깅합니까?

The operation couldn’t be completed. (kCFErrorDomainCFNetwork error 303.) 

Apple docs에 따르면,이 "HTTP 서버의 응답을 구문 분석 할 수 없습니다에 해당

있는 NSURLConnection은 불평하지 않았 반면, CFNetwork에서 때때로 (1 ~ 3 회) 연결을 다음과 같은 오류를 제공하고 죽인다 . "

이것은 연결이 몇 초 동안 열리고 응답이 이루어진 후에 만 ​​발생합니다.

tshark를 사용하여 서버에서 패킷 캡처를 수행했습니다. 상당히 크며 기밀 세부 정보는 물론 UTF-8도 포함되어 있습니다.

올바른 HTTP 1.1 청크 응답임을 확인하려면 어떻게해야합니까?

분명히하기 위해 나는 tcpick -C -yP -r ...의 결과를 살펴본 결과 즉시 아무런 문제가 보이지 않았지만 유효 한 바이트인지 확인하기 위해 통과 할 수있는 것이 있는지 궁금합니다.

답변

0

얼랑 (Erlang) 웹 서버가 너무 낮게 설정되어 문제가 발생했다는 사실이 밝혀졌습니다 (sndbuf). 패킷 캡처를 스캔의 5 시간의 낭비였다

는 등

-1

올바른 HTTP 1.1 청크 응답임을 확인하려면 어떻게해야합니까?

chunked transfer encodingimplemented correctly 인 것을 확인함으로써.

+0

케어 정교 등 처음부터 CFStream와 HTTP 청크 구현? 늘어나는만큼 구현이 확실하다고 말할 수있는 한, 패킷 덤프가 사운드라고 말할 수있는 한 (비록 다소 크기가 크지 만 내 외모는 다소 피상적이지만) CFNetwork는 소리가 나지 않는다고 말하고 있습니다. HTTP 클라이언트가 패킷 캡처를 사용하여이를 확인하기 위해 작성한 것이 아니라면 유효성 검사를 위해 할 수있는 일이 있습니까? – Max