|
안녕하세요. 신동승입니다.
임프님의 GetHttpFile에 대해서는 모르구요..
님께서 웹을 통해 받아들이려 하는 정보가 jpg, gif 등등 HTML 문서가 아닌 다른 형식의 파일이라면
저는 그 부분에 대해서 아는 바가 없으니 님께서 찾으신 방법대로 해 보시기 바랍니다.
(저는 아직 HTML 문서 외에 다른 걸 받아야 될 필요성이 없어서 신경 써 본 적이 없습니다)
IdHTTP도 Get, Post시에는 결과를 받아오기 위해 Blocking 되는 건 똑같습니다.
ClientSocket을 쓰신다면 Receive 이벤트로 결과를 받아오므로 Blocking을 피할 수 있습니다.
다만 님께서 지적하신대로 ClientSocket은 그냥 TCP/IP 통신만 할 뿐이므로
HTTP 프로토콜의 고급 기능은 개발자가 작성해야 합니다.
(예를 들어 Temporary Removed, Redirection 같은 것들이죠)
IdHTTP를 쓰면 이런 것들은 자동으로 처리해 줍니다.
(필요하면 Redirection을 안 할수도 있습니다)
그러나 ClientSocket은 자기가 직접 해야 되지요.
이것이 장점이 될 수도 있고 단점이 될 수도 있습니다.
장점으로는 그런 Redirection을 자동으로 해 주기 때문에 결과에만 신경쓰면 된다는 거고..
단점은 어떤 cgi 호출이 성공/실패했느냐는 결과만 중요하지
그 결과로 나오는 Redirection 같은 건 필요없을 때 불필요하게 문서 받아오는 시간이 더 소요된다는 거죠.
어떤 방식을 쓰는지는 개발자 몫입니다.
아직 시도해 본적은 없지만 IdHTTP 가지고 문서 받는 동안 이벤트 처리를 하길 원하신다면
IdHTTP를 Thread 안에서 구동시키는 것도 한 방법이 될 것입니다.
(요즘 새로 만들고 있는 로봇에 이 방법을 한 번 써 보려고 합니다)
이걸로 충분한 답변이 되었을런지요.
즐푸하시길 바랍니다.
|