Ir para conteúdo
  • Cadastre-se

dev botao

Comunicacao TCP Server


  • Este tópico foi criado há 2620 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Amigos,

Com o acbrtcpserver, e possivel comunicar com varios clientes ao mesmo tempo?

Tipo:

Vou term um servidor que fica esperando alguma coisa ou ate mesmo enviando para os clientes, e vou ter varios clientes que ficam enviando para o servidor ou recebendo alguma coisa do servidor.

Alguem ja fez algo parecido?

Francisco A Souza

Link para o comentário
Compartilhar em outros sites

  • Fundadores

Sempre o Cliente que deve iniciar a "conversa" e nunca o servidor...

Você pode enviar qualquer informação ou tipo de dado... no caso do TXT, leia-o em um StringList e envie como qq outra string

Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Link para o comentário
Compartilhar em outros sites

Sempre o Cliente que deve iniciar a "conversa" e nunca o servidor...

Você pode enviar qualquer informação ou tipo de dado... no caso do TXT, leia-o em um StringList e envie como qq outra string

Daniel, mas se o cliente estiver conectado, o server pode iniciar uma conversa com ele né? ou enviar alguma coisa?

Link para o comentário
Compartilhar em outros sites

  • Fundadores

perfeito... o problema é a conexão inicial, que só o Client pode iniciar... depois de conectado ambos os lados podem enviar dados...

Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Link para o comentário
Compartilhar em outros sites

perfeito... o problema é a conexão inicial, que só o Client pode iniciar... depois de conectado ambos os lados podem enviar dados...

Daniel, pesquisei na net, e fiz uma rotina para comunicar com o acbrtcp dentro de uma thread.

Bom ele conecta, envia dados... mas nao consegue receber, e possivel vc dar uma olhadinha pra ver onde estou errado? nao consegui descobrir ...

Obrigado...

Francisco A Souza

tcp.zip

Link para o comentário
Compartilhar em outros sites

  • Fundadores

Não uso Delphi nem a Indy... fica difícil analisar...

Uso Lazarus/FPC e a própria Synapse (usada para construir o ACBrTCP) como Client..

Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Link para o comentário
Compartilhar em outros sites

Boa tarde, será que poderiam me dizer como posso enviar um arquivo utilizando o AcbrTCP.

Obrigado

Walter, se for string, vc pode usar um stringlist e enviar o text, fiz esse teste e foi blz.

Agora se for outro tipo de arquivo, vc pode criar uma propriedade pra enviar um stream, eu fiz isso no meu tcp, ate enviei aqui na mensagem anterior para atualizar o svn, mas é muito simples... entra no fonte do tcp, e copia a procedure enviarstring, e muda o tipo para stream.

Link para o comentário
Compartilhar em outros sites

  • Fundadores

Veja um exemplo bem simples, usando a Synapse que é distribuída com o ACBr em:

http://www.ararat.cz/synapse/doku.php/p ... tcpwithssl

http://www.ararat.cz/synapse/doku.php/public:howto

Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Link para o comentário
Compartilhar em outros sites

Bom dia , Francisco.

Fiz um teste sendo enviado um arquivo .TXT, para o cliente, ele recebe o TXT so que o arquivo e gravado no disco em BRANCO ( 0 KB ), sabe como resolver isto ?

Tava olhando sua função ( Abaixo ) acho esta faltando alimentar o STREAM ( arq ) com os dados recebidos !!!

Obrigado

procedure TReadingThread.Execute;

begin

txt:=tstringlist.Create;

arq:=TMemoryStream.Create;

Fstring:='';

while not Terminated do begin

FString := FConn.RecvPacket(1000);

if Fstring='01' then

begin

fconn.RecvStream(arq,100);

///ACHO Q ESTA FALTANDO ALIMENTAR A VARIAVEL arq AQUI !!! ANTES DE GRAVAR O ARQUIVO

arq.SaveToFile('c:\PizzaRecebido.txt');

arq.Free;

Fstring:=fstring+' recebido stream ';

end;

// if fstring<>emptystr then begin

// txt.Add(fstring) ;

// txt.SaveToFile('C:\pdv.txt');

//end;

Synchronize(AtualizarMemos);

end;

txt.Free;

end;

Link para o comentário
Compartilhar em outros sites

walter, nao precisa criar nao.., pq a variavel arq ja esta sendo criada na classe da thread.

e esta sendo preenchida aqui:

fconn.RecvStream(arq,100);

e apos o rececimento ela é gravada.

arq.SaveToFile('c:\chico.txt'); aqui pode ser txt, jpeg, avi.. qualquer coisa...

arq.Free;

Fstring:=fstring+' recebido stream ';

no meu teste aqui funciona 100%

Link para o comentário
Compartilhar em outros sites

boa noite, Francisco.

Obrigado , primeiramente por responder minhas perguntas.

*** Estranho que o arquivo chega vazio , sabe me dizer oque pode ser ?

para enviar pelo servidor faco assim :

Clique do botão no SERVER:

Var

I : Integer ;

Selecionado : Boolean ;

tStream : TMemoryStream;

begin

tStream := TMemoryStream.Create;

tStream.LoadFromFile('c:\Pizza.TXT');

Selecionado := False ;

For I := 0 to CheckListBox1.Items.Count-1 do

begin

if CheckListBox1.Checked then

begin

Selecionado := True ;

tStream.Position := 0;

ACBrTCPServer1.EnviarStream( tStream, I );

end ;

end ;

if not Selecionado then

begin

tStream.Position := 0;

ACBrTCPServer1.EnviarStream( tStream, -1 ); // -1 envia para Todas conexoes

end;

Link para o comentário
Compartilhar em outros sites

  • 10 meses depois ...
  • Consultores

Gostaria de saber se ele serve para comunicação de banco de dados via internet...

 

Crie uma dúvida nova para um tópico novo conforme as regras. Veja neste em especial a "2.2 - Permaneça no assunto".

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
Link para o comentário
Compartilhar em outros sites

  • Este tópico foi criado há 2620 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.

The popup will be closed in 10 segundos...