title: Delphi- downloading files from the web with sockets
body: <p>I have tried Synapse, Indy and ICS and I am not satisfied with them. I want to download multiple files in multiple parts at the same time, support resuming, gzip-encoded files, cookies, logging to websites using POST and so on. So I think I will just write in with sockets.
  But I see there is a plenty of sockets available in Delphi: TTcpClient, TRawSocket, TCGIRequest, TClientSocket and so on. They are all badly documented- very hard to find usage examples. I tried using TTcpClient but sometimes the program freezes and then hits a timeout and I have no idea why. Looks like a problem while waiting for responses. This is surely not a server problem because I test on localhost.
  What is the best socket to use to work with HTTP protocol? Something easy to use?</p>
  
  <p>I want to use in both Delphi 7 and XE2. I don't want to use anything WinAPI like, so I don't have to deal with PChars and other non-Delphi things.</p>
  
  <p>I am thinking of something like, either:</p>
  
  <p>1) Does exactly what I want- downloads multiple pieces with progressbars of many files at the same file</p>
  
  <p>OR</p>
  
  <p>2) Something like telnet- so I just write HTTP commands as strings and I get arrays of bytes in return which I can either transform into strings or save into tstreams.</p>