Fórum Problemas com Compoentes INDY, como resolvo... #264902
11/01/2005
0
Olá colegas eu estou querendo transmitir dados por Stream pelo componente IdTCPClient mais vejo que não consigo, fazendo alguns teste vi que esse componente não transmite Stream apenas lé será que tem outra forma
veja o codigo:
with IdTCPClient1 do begin
if connected then DisConnect;
Host := Trim(Receivers.Text);
Port := strtoint(Edit2.text);
Connect;
fStream := TmemoryStream.Create;
fStream.LoadFromFile(Arquivo);
OpenWriteBuffer;
WriteFile(Arquivo, false); // 1 dessas duas formas não funciona WriteStream(fStream); // 2
CloseWriteBuffer;
FreeAndNil(fStream);
disconnect;
end;
usando o evento OnExecute do servidor dá certo mais não posso usar oo servidor pois tenho que transmitir pelos clientes
procedure TForm1.IdTCPServerExecute(AThread: TIdPeerThread);
var
fTmpStream, ffStream: TMemoryStream;
begin
ffStream := TmemoryStream.Create;
ffStream.LoadFromFile(Arquivo);
AThread.Connection.OpenWriteBuffer;
AThread.Connection.WriteStream(ffStream); // funciona
AThread.Connection.WriteFile(Arquivo, false); // funciona
AThread.Connection.CloseWriteBuffer;
ffStream.Free;
AThread.Connection.Disconnect;
end;
Como resolvo isso..
veja o codigo:
with IdTCPClient1 do begin
if connected then DisConnect;
Host := Trim(Receivers.Text);
Port := strtoint(Edit2.text);
Connect;
fStream := TmemoryStream.Create;
fStream.LoadFromFile(Arquivo);
OpenWriteBuffer;
WriteFile(Arquivo, false); // 1 dessas duas formas não funciona WriteStream(fStream); // 2
CloseWriteBuffer;
FreeAndNil(fStream);
disconnect;
end;
usando o evento OnExecute do servidor dá certo mais não posso usar oo servidor pois tenho que transmitir pelos clientes
procedure TForm1.IdTCPServerExecute(AThread: TIdPeerThread);
var
fTmpStream, ffStream: TMemoryStream;
begin
ffStream := TmemoryStream.Create;
ffStream.LoadFromFile(Arquivo);
AThread.Connection.OpenWriteBuffer;
AThread.Connection.WriteStream(ffStream); // funciona
AThread.Connection.WriteFile(Arquivo, false); // funciona
AThread.Connection.CloseWriteBuffer;
ffStream.Free;
AThread.Connection.Disconnect;
end;
Como resolvo isso..
Luciano_f
Curtir tópico
+ 0
Responder
Posts
11/01/2005
Luciano_f
Codigo meio confuso, apenas uma correção
usei os dois metodos e não dá certo nos clientes apenas dá certo nos servidores.
WriteFile(Arquivo, false);
WriteStream(fStream);
with IdTCPClient1 do begin
if connected then DisConnect;
Host := Trim(Receivers.Text);
Port := strtoint(Edit2.text);
Connect;
fStream := TmemoryStream.Create;
fStream.LoadFromFile(Arquivo);
OpenWriteBuffer;
WriteFile(Arquivo, false);
WriteStream(fStream);
CloseWriteBuffer;
FreeAndNil(fStream);
disconnect;
end;
usei os dois metodos e não dá certo nos clientes apenas dá certo nos servidores.
WriteFile(Arquivo, false);
WriteStream(fStream);
with IdTCPClient1 do begin
if connected then DisConnect;
Host := Trim(Receivers.Text);
Port := strtoint(Edit2.text);
Connect;
fStream := TmemoryStream.Create;
fStream.LoadFromFile(Arquivo);
OpenWriteBuffer;
WriteFile(Arquivo, false);
WriteStream(fStream);
CloseWriteBuffer;
FreeAndNil(fStream);
disconnect;
end;
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)