怎样用tidtcpclient从服务器下载图像(图像在500K左右)idtcpclient1.Connect();
  idtcpclient1.SendCmd('GET /Image/6/100000/100000/Face/Image1.tif HTTP/1.1' + chr(13) + chr(10) + 'Host:100.100.100.100' +  chr(13) + chr(10) + chr(13) + chr(10));
  mem := tmemorystream.Create;
  idtcpclient1.ReadStream(mem);执行到idtcpclient1.ReadStream(mem)时程序进入死循环了好像,如果改成
showmessage(idtcpclient1.ReadLn());程序能够正常返回图像文件大小怎么才能从服务器端得到图像啊????

解决方案 »

  1.   

    indy是阻塞式的,也就是说dtcpclient1.ReadStream(mem);要返回了程序才会往下走,可能是文件太大或网速的问题
      

  2.   

    楼主应该多花功夫理解HTTP协议..
    在大多数情况,你这样GET请求一个文件,服务器回应的时候,会先发HTTP回应头,
    然后才是文件实体内容..你接收的时候,应该先收HTTP回应头,从回应头里面取得实体大小信息.
    接下来就知道接收多长的文件了.
      

  3.   

    ires := idtcpclient1.ReadFromStack;
        if ires > 0 then
        begin
          idtcpclient1.readStream(mem);
        end;
    试试