function WSARecv2(s: TSocket; lpBuffers: LPWSABUF; dwBufferCount: DWORD;
var lpNumberOfBytesRecvd, lpFlags: DWORD; lpOverlapped: LPWSAOVERLAPPED;
lpCompletionRoutine: LPWSAOVERLAPPED_COMPLETION_ROUTINE): Integer; stdcall;
var tt:tstringlist; aaa:rawbytestring; bbb:rawbytestring;t1,t2:tmemorystream; i,j,k:integer; sss:string; sss2:string;
ds:TDeCompressionStream; buff : array[1..4096] of Byte;
iread : integer;
begin

if lpbuffers^.len >=5 then
begin
// getmem(aaa[1],lpbuffers^.len+1);
setlength(aaa,lpbuffers^.len+1);
move(lpbuffers^.buf^,aaa[1],lpbuffers^.len );

t1:=tmemorystream.Create;
t2:=tmemorystream.Create;

t1.Write(aaa[1],lpbuffers^.len);
// t1.LoadFromFile('c:\baobao1.txt');
t1.Position:=0;
{ bbb:=aaa;
ds:=TDeCompressionStream.Create(t1);
try
repeat
iread := ds.Read(buff, sizeof(buff));
if iread > 0 then
t2.Write(buff, iread);
until (iRead = 0);
except

end;
try

ds.Free;
except

end; }


// getmem(bbb,t2.Size+1);
setlength(bbb,t2.Size+1);
// bbb:= zlibex.ZDecompressStr(bbb);
// ZLibEx.ZDecompressStream2(t1, t2, -15);
// form4.IdCompressorZLib1.DecompressGZipStream(t1,t2);
// form4.IdHTTP1.Compressor.DeflateStream(t1,t2);
// form4.IdHTTP1.Compressor.DecompressGZipStream(t1,t2);
// TIdZLibCompressorBase.DecompressGZipStream(t1,t2);

// jjj(t1,t2);
// form4.IdCompressorZLib1.DecompressDeflateStream(t1,t2);
// form4.IdCompressorZLib1.deCompressStream(t1,t2,0) ;
// form4.IdHTTP1.Compressor.DecompressGZipStream(t1,t2);
// getmem(bbb,lpbuffers^.len *2);
t2.Position:=0;
t2.Read(bbb[1],t2.Size);
sss:=bbb;

{ sss:=UTF8ToUnicodeString(bbb);
// sss:=urldecode(sss);
sss:= EnCodeUtf8URLStr(utf8encode(bbb)); }
sss:=urldecode(sss);
sss:=utf8decode(sss);
ttt.Add(sss);

t1.Free;t2.Free;
end;


Result := oleWSARecv(s, lpBuffers, dwBufferCount, lpNumberOfBytesRecvd, lpFlags, lpOverlapped,
lpCompletionRoutine);
end;