[Socket] Header 를 제외하고, 파일을 저장하는 방법에 대해 문의드립니다.
보슬
안녕하세요.
Socket 과 관련하여 절박한 상태가 되어..-ㅁ-;;
이렇게 질문을 남기게 되었습니다.환경 .
1. responseHeader 내에서 특정 값을 읽어야 합니다.
2. Flash Player 프로젝트 (AIR가 아닌) 라서, HTTPStatusEvent 내의 responseHeader 값을 쓸 수 없기에..Socket을 쓰게 됐습니다.
3. 최종적으로는, 파일 다운로더 (+ 디코더 기능)를 만들려고 합니다.진행 .
1. 소켓을 연결하고 들어오는 패킷에 \r\n\r\n 이 있으면 String 형태로 분리하여,
앞 부분은 헤더로 처리하고 뒷 부분은 데이터로 간주하여 queueBA 라는 ByteArray 에 저장합니다.
2. ProgressEvent.SOCKET_DATA 이벤트 에서 받게 되는 bytesAvailable 값은 모두 더해서 bytesTotal 이라는 값으로 저장..
3. 위의 과정에서, 1번 항목의 처리는 isHeaderServed 라는 bool 값을 설정해 두어 중복처리하지 않습니다.
즉 1항이 한번 처리되어 헤더 / 데이터로 나누어 데이터가 queueBA 에 저장되고 나면,
그 뒤로는 2항의 항목이 반복되어 queueBA로 쌓아갑니다.이슈 .
위처럼 진행을 했다면, bytesTotal 의 값은 queueBA.length 와 1항에서의 헤더 값을 더한 총량이 되어야 하지 않나요?
...그런데 수가 안 맞습니다 ;ㅁ;
엄청나게 막 코딩으로 대충 짠 첨부한 as 파일 (불필요한 부분은 삭제했습니다만)을 실행하면,
총 파일 용량은 11434606 이 됩니다.
그런데, 헤더를 제외한 queueBA 의 크기는 계속 다르게 나오네요.
질문 .1. 제가 지금 생각하고 있는 형태가 맞긴 한가요? (다운로드될 파일 = 전체 소켓 수신 값 - 헤더)
2. 만일 맞는다면, 헤더를 제외하고 자른 데이타의 크기가 달라지는 건 왜일까요? ㅠㅠ아..
소켓이라고는 생전 안 써보다가 쓰려니, 얼마나 URL, HTTP 관련 클래스들이 감사한지 새삼 느껴집니다.
부족한 제게 좋은 의견 서슴없이 부탁드립니다. :)
미리 감사합니다!!
-
은G
자문자답이네요.
as3httpclientlib 안에 필요한 기능이 다 들어 있는걸 모르고!! ㅠㅠㅠ
암튼. 이용해서 해결했습니다.
플생사모가 확실히 예전같지 않은 듯 합니다.
플래시 플랫폼 자체의 생명력이 약해졌다고는 하지만, 여러모로 아쉬운 요즘이네요 ;ㅁ;