Bonjour,
J'ai un IdTCPServer avec plusieurs client connectés. La communication fonctionne normallement mais quand je depasse un certain nombre de readstream le serveur ne peut plus lire la data et ceci seulement dans l'événement OnExecute. Je n'arrive pas a trouver une solution .. Pouvez vous me suggerer une solution svp ? Merci .




Code : Sélectionner tout - Visualiser dans une fenêtre à part
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;