IDTCPClient/Server问题
//接收代码 Len := 0; AThread.Connection.ReadBuffer(Len, SizeOf(Buf)); Len := ntohs(Len); Buf.Text := AThread.Connection.ReadString(Len); //执行到这就跑了 为什么? FStream := TFileStream.Create('D:\Test\' + Buf.Values['FileName'],fmCreate); AThread.Connection.ReadStream(FStream, StrToInt(Buf.Values['Size']), False); mmoLog.Lines.Add(Buf.Text);
//发送代码 sFileName := RightPartTwo(sFileNames[i], '\'); FStream := TFileStream.Create(sFileNames[i], fmOpenRead); Insert(frmMain.mmoLog.Lines.Count, FRequest.Text); FResponse.Clear; FResponse.Add('[Response]'); FResponse.Add('Command=SaveData'); FResponse.Add('FileName=' + sFileName); FResponse.Add('Size=' + IntToStr(FStream.Size)); FResponse.Add('Result=OK'); SendResponse; FClient.WriteStream(FStream, True, False, FStream.Size); FStream.Free;procedure TClientThread.SendResponse;var Len: Integer; Stream: TStringStream;begin Stream := TStringStream.Create(''); Len := Length(FResponse.Text); Len := htons(Len); Stream.WriteBuffer(Len, SizeOf(Len)); Stream.WriteString(FResponse.Text); FClient.WriteStream(Stream); Stream.Free;end;