Delphi - Client/server InDy - Errore Read su Stream dal Server

  • Creatore Discussione Creatore Discussione niobi
  • Data di inizio Data di inizio

niobi

Nuovo Utente
31 Ago 2010
2
0
1
taranto
niobi.xoom.it
Salve a tutti, sono nuovo di queste parti, ma mi sembra davver ben congegnato.
Dunque.
Ho scritto due procedure (Client e server) separate, in cui ho inserito componenti InDy specifici; nel mio caso specifico esse sono sullo stesso computer (collegamento su 127.0.0.1), la porta è > 50000, nella realtà risiedopno su computer diversi in rete locale (IP passivo).
Riporto la porzione di codice (ritengo) sufficiente per comprendere il problema.

procedura client (contiene comp. TIdTCPClient + TIdAntiFreeze)
- - - -- - - - - - -
crea un file su disco, contenente i dati da spedire (da poche decine ad alcune migliaia di caratteri), e lo spedisce al server:

TmpStream := TMemoryStream.Create;
TmpStream.LoadFromFile(IndirProc+'\REPORT\TMS.DAT'); // file creato su disco locale
Client.OpenWriteBuffer;
try
Client.WriteStream(TmpStream);
except
on E: ESocketError do
MesServ('Transazione non eseguita: '+#10+'"'+E.Message+'"'+#10+'Riprovare...');
end;
Client.CloseWriteBuffer;
FreeAndNil(TmpStream);

procedura Server (contiene comp. TCPServer + TIdThreadMgrDefault + TIdAntiFreeze.)
- - - - - - - - - - - - -
(in Server.OnExecute)
try
TmpStream := TFileStream.Create(IndirArch+'\Trans7',fmCreate);
Size := AThread.Connection.ReadInteger;
AThread.Connection.ReadStream(TmpStream,Size,False);
except
on E: Exception do begin
MesServ(3,'Errore in lettura dati: '+E.Message); Ok := False;
end;
end;
FreeAndNil(TmpStream);

Problema
---------
se leggo il valore di Size, è = 4.114.567.644 !!!!! (tramite debug) e la procedura chiude in errore, credo, per timeout.
Domanda:
cosa non ho fatto?
cosa legge sullo stream che io avrei dovuto azzerare, forse?
ma lo stream ricevuto dal server, non è quello spedito dal client, visto che viene attivato l'evento OnExecute?
Grazie per una risposta.
 

Discussioni simili