1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
| type TInfPacket = record
info1 : String[10];
info2 : String[10];
Password : String[10];
Type : string[15];
Authorized : Boolean;
function ReceiveStream(AContext: TIdContext; var AStream: TStream)
: Boolean; overload;
var
LSize: LongInt;
begin
Result := True;
try
LSize := AContext.Connection.IOHandler.ReadLongInt();
AContext.Connection.IOHandler.ReadStream(AStream,LSize, False)
AStream.Seek(0,soFromBeginning);
except
Result := False;
end;
end;
procedure TForm1.IdTCPServerExecute(AContext: TIdContext);
var
AStream: TmemoryStream;
begin
AStream:=TMemoryStream.Create;
try
AStream.Clear;
ReceiveStream(AContext,TStream(AStream));
AStream.Read(InfPacket,SizeOf(TInfoPacketDest)); // ===> Ca fonctionne ici
if InfPacket.Type='Send'
then
begin
Astream.Clear;
AStream.Write(InfPacket,SizeOf(TInfoPacketDest));
SendStream(AContextClient1,TStream(AStream)); //ca fonctionne ici
Astream.Clear;
ReceiveStream(AContextClient2,TStream(AStream)); // ici ca ne fonctionne pas ! ( a noter que si j'utilise cette meme ligne dans l'événement OnConnect ca fonctionne trés bien
AStream.SaveToFile('test.bmp');
end;
Finally
Astream.free;
end; |
Partager