|
어떤 Proxy는 특정 크기 이상의 Data를 전송 못하는 경우가 있더군요.
다 그런것은 아니고 어떤 Proxy가 있는 곳에서 다운로드 받으면 특정 크기 이상이면
다운로드가 안되는 경우가 있어서. 분할 Packet 방식으로 이를 해결하려 했습니다만.
저 InternetReadFile(,,) api로 서버에서 부터 전송된 packet들을 읽을때.
두번째 Packet부터는 인식이 안되더군요. 왜 그럴까요, 아래에 보시면 HTTP trace로 보면 서버에서는 56a , 54a 크기만큼 두번 패킷을 보내고 있습니다만, 첫번째 패킷 이후에는 InternetQueryDataAvailable(,,) 로 읽을 수 있는 available한 byte는 0으로 나오고
InternetReadFile (FhReq, (LPVOID)&szData[offset], MAX_BYTE-1, &FdwSize)
이렇게 하더라도 FdwSize에는 0이..
물론. client가 패킷마다 요청. server가 응답하는 방식도 고려했지만, 그러기엔 server에 가해지는 부담이 너무 큽니다.
HTTP header에 특정 Field를 설정해줘야 하거나, api들의 para 들중 특정 flag을
설정해 줘야 하는 것인지.. 찾고 있지만 아직 발견하지 못했습니다.
혹시 분할된 Packet을 wininet api 들을 이용해 처리해 보신 분 계시면.
조언 부탁드립니다.
//.. HTTP Trace로 dump한 Server에서 보내는 packet.
-------- 09:54:00 (4-3) --------
HTTP/1.1 200 OK
Content-Type: text/html
Cache-Control: private
Transfer-Encoding: chunked
56a
AAAAMgAAB7YAAAABAAAQAAAAAAAAAAPUAAcFYAAAB5IAAAAAAAAAAAAAAAAwMTU3NjAAAADH
0bG5wPy3wgAAAAAAAAAAAAAAAAABOOQAAF8eMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
b5oAATB0AAAAAAAAAAAAAF8eAABfHgAAXx4AAF8eAABtYAAAUNwwMDAxMjAAAAC068fRxeu/
7gAAAAAAAAAAAAAAAAABOOQAADNeMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACjIAAAMg
AAAAAAAAAAAAADNeAAAzXgAAM14AADNeAAA6/AAAK8AwMDk3MjAAAADA/LHiw8rA2gAAAAAA
AAAAAAAAAAABOOQAAR/kMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAz4AAAFUAAAAAAAA
AAAAAR/kAAEf5AABH+QAAR/kAAFK3AAA9OwwMDk2OTAAAADEycDMtfDEycDMAAAAAAAAAAAA
AAABOOQAAAwSMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADJQAAAEsAAAAAAAAAAAAAAwS
AAAMEgAADBIAAAwSAAAN3gAACkYwMDk3MzAAAAC1v73Fv6G9ur+jxrwgICAgICAgIAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAW+AAAAAAAA
AAAAAAAAAAAGaAAABRQwMDk3NjAAAADH0bG5xMTHu8XNAAAAAAAAAAAAAAABOOQAAFOYMAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADVIAAALuAAAAAAAAAAAAAFOYAABTmAAAU5gAAFOY
AABgGAAARxgwMDA2NjAAAADHz8DMtNC9ugAAAAAAAAAAAAAAAAABOOQAAAF8MAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAFgnD4BcikiAAAAAAAAAAAAAAF8AAABfAAAAXwAAAF8AAABswAA
AUUwMzM3ODAAAAC047nowM6777D4u+cAAAAAAAAAAAABOOQAAD6AMAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAJhYAAKhSAAAAAAAAAAAAAD6AAAA+gAAAPoAAAD6AAABH4AAANSAwMzc3
MzAAAAAzUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAW0AAAAAAAAAAAAAAAAAAAGXgAABQowNDkzNzAAAABD
Sr+jxc3F18DOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==
0
HTTP/1.1 200 OK
Content-Type: text/html
Cache-Control: private
Transfer-Encoding: chunked
54a
AAAAMgAAB7YAAAABAAAAEAAAAAAAAAO+AAcFYAAAB5IAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAA/egAAAAAAAAAAAAAAAAAARxgAADfcMDAxNDYwAAAAQllDAAAAAAAAAAAAAAAA
AAAAAAAAATiAAADeqDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH+AAAAMgAAAAAAAAAA
AADeqAAA3qgAAN6oAADeqAAA/9wAAL10MDA5MTUwAAAAu++8usD8seIAAAAAAAAAAAAAAAAA
ATjkAAEqDDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADXKAAAVBAAAAAAAAAAAAAEqDAAB
KgwAASoMAAEqDAABVpQAAP2EMDEyOTkwAAAATEe8rsCvyK3H0AAAAAAAAAAAAAAAATjkAAA8
KDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABL8AAA3vgAAAAAAAAAAAAA8KAAAPCgAADwo
AAA8KAAARSQAADMsMDM1NzYwAAAAQ0ozObzux84AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE+XAAAAAAAAAAAAAAAAAAB
ZEAAARh4MDAwMDgwAAAAwfi3zgAAAAAAAAAAAAAAAAAAAAAAATjkAAAPCjAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAvCAAAYTAAAAAAAAAAAAAAPCgAADwoAAA8KAAAPCgAAEUkAAAzL
MDEyMzIwAAAAsOa1v7ChvboAAAAAAAAAAAAAAAAAATjkAAA4QDAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAIwAAACigAAAAAAAAAAAAA4QAAAOEAAADhAAAA4QAAAQKYAAC/aMDMxMTUw
AAAAsbm5zsSrteUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAADIyAAAAAAAAAAAAAAAAAAA4JwAALD0MDAwMTA3AAAAwK/H
0b7nx+Ayv+xCAAAAAAAAAAAAATjkAADmeDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAe
AAAAbgAAAAAAAAAAAADmeAAA5ngAAOZ4AADmeAABCNgAAMQYMDYwMDAwAAAAsbm5zsC6x+AA
AAAAAAAAAAAAAAAAATjkAADobDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACzsAABYhAAA
AAAAAAAAAADobAAA6GwAAOhsAADobAABCzAAAMWo
0
|