Ir para conteúdo
  • Cadastre-se

dev botao

Comunicação via Sockets


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

Recommended Posts

Estou utilizando Delphi7 , Biblioteca Sinapse , e ACBRNFeMonitor Capcom.

//---> validação .

DMNFE.fSocket.SendString('NFE.VALIDARNFE("'+CaminhoAQRXML+'")'+sLineBreak+'.'+sLineBreak);

Monitor_Retorno := DMNFE.fSocket.RecvTerminated(10000, #3);

if COPY(trim(Monitor_Retorno),1,2) <> 'OK' then

raise Exception.Create('Erro na Validação dos Dados '+sLineBreak+Monitor_Retorno);

===============================================================================

Na rotina Acima estou enviando um comando para o ACBRNFeMonitor ,

DMNFE.fSocket.SendString('NFE.VALIDARNFE("'+CaminhoAQRXML+'")'+sLineBreak+'.'+sLineBreak);

e queria saber como se tem alguma forma pra eu testar se o comando

DMNFE.fSocket.RecvTerminated(10000, #3); , vai me retornar , por exemplo , enviei o comando para o aplicativo servidor

e ele recebeu , mas na hora de retornar ele travou ou algo parecido , como posso consistir pra saber que nao veio o retorno

, pois esta acontecendo em algumas NFe que estão passando sem a validação , qndo vai enviar pro sefaz , que no caso dai seria em outro processo pra frente , ele me retorna erro no envio , tipo como xml inválido .. Até isso aconteceu por causa do campo NCM incompleto , mais até a duvida fica de como testar antes de proceguir no comando ...

Desde ja agradesco

Adilson Pazzini .

Link para o comentário
Compartilhar em outros sites

  • Moderadores

Vc pode testar sempre se veio alguma resposta no comando DMNFE.fSocket.RecvTerminated(10000, #3); pq sempre o ACBrNFeMonitor irá responder pelo menos OK ou ERRO.

Geralmente eu recebo a resposta dentro de um loop e depois de um determinado tempo sem resposta aviso o usuário que o monitor não está respondendo e pergunto se deseja tentar novamente.

djsystem-logo.png
 youtube.png facebook.png instagram.png linkedin.png
André Ferreira de Moraes | Analista de Sistemas
www.djsystem.com.br | www.djpdv.com.br
www.tefhouse.com.br | www.lambretinha.com.br
Link para o comentário
Compartilhar em outros sites

  • 1 mês depois ...

André .. sem querer pedir de mais .. mais pedindo .. como poderia ta montando esse Loop , usaria alguma propriedade / função da biblioteca Synapse , ou apenas estipularia um tempo detro do loop e um numero de tentativas , no caso se demorar pra responder que nem vc coloca a cima . se o proprio usuario deseja continuar ou cancelar ...

Adilson .

Link para o comentário
Compartilhar em outros sites

  • Moderadores

Dentro de um timer ou de uma thread vc pode usar o seguinte código:


var
RespByte : Byte;
begin
Resposta := '';
RespByte := 0;

while (RespByte 3) and (ModalResult mrCancel) do
begin
RespByte := fsSock.RecvByte(10);
Resposta := Resposta + chr(RespByte);
Application.ProcessMessages;
end;

Resposta := Trim(AnsiToUtf8(Resposta));

if Resposta '' then
Close;
end;
[/code]

djsystem-logo.png
 youtube.png facebook.png instagram.png linkedin.png
André Ferreira de Moraes | Analista de Sistemas
www.djsystem.com.br | www.djpdv.com.br
www.tefhouse.com.br | www.lambretinha.com.br
Link para o comentário
Compartilhar em outros sites

if not Assigned( fSocket ) then

begin

fSocket := TTCPBlockSocket.Create;

fSocket.Connect('localhost,'3438');

if fSocket.lasterror <> 0 then

begin

MessageDlg(fSocket.LastErrorDesc,mtError,[MbOK],0);

fSocket.Free ;

fSocket := nil;

Abort;

end;

end ;

Após a abertura da porta via Socks... existe alguma forma para eu saber se a conexao esta ativa ainda ..

um exemplo . é eu conectar com o AcbrMonitor , dai está ativo. e apos a conexao , depois de algum tempo

o servidor onde esta o MOnitor cai por falta de energia ou algo parecido . dai eu vou mandar algum comando

pro monitor . como o monitor esta desligado . o sistema tem como saber .. tipo algum comando do Socket pra

testar a conexo ou algo parecido . pra avisa ao usuario que a conexao caiu ..

obrigado ..

Link para o comentário
Compartilhar em outros sites

  • Fundadores

Não existe tal conceito...

Você simplesmente tenta escrever no Socket, e trata a exceção em caso de falha...

Veja esse link:

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

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

  • Este tópico foi criado há 4722 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...