Ir para conteúdo
  • Cadastre-se

dev botao

Comandos TCP/IP


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

Recommended Posts

Pessoal , boa tarde!
 

Estou com um problema que está travando o processo de emissão da nf-e.

Estou usando uma classe em C# que estava no svn do acbr

faço a transmissão com o comando NFE.CriarEnviarNFe
logo depois uso o uso o comando para envio do xml por e-mail

e em seguida uso o comando de impressão .

o processo na primeira vez ocorre tudo bem , porém da segunda vez já começa a da um problema o acbr não fechar a conexão 

mesmo enviando o comando para fechar a conexão .

alguém me dá uma sugestão ?

Editado por agnaldo primo
Link para o comentário
Compartilhar em outros sites

  • Moderadores

Bom dia!

estranho pois o código que está falando tem o connect e o disconnect a menos que esteja tratando diferente.

public static string ComandoACBR(string comando)
		{
			var retorno = "";

			try
			{
				using (var cliente = new TcpClient())
				{
					String responseData = String.Empty;
					Byte[] data = new Byte[512];

					cliente.Connect("127.0.0.1", 3434);

					if (String.IsNullOrEmpty(comando)) { comando = "NFE.StatusServico"; }

					// concatena na string com o comando os códigos para o monitor entender
					comando += "\r\n.\r\n";

					// abre um stream para comunicação
					NetworkStream stream = cliente.GetStream();

					// lê o que possivelmente estiver sendo enviado pelo monitor
					Int32 bytes = stream.Read(data, 0, data.Length);

					// traduz os bytes em string
					responseData = System.Text.Encoding.ASCII.GetString(data, 0, bytes);


					// Traduz a string para bytes
					data = System.Text.Encoding.ASCII.GetBytes(comando);

					// envia o comando
					stream.Write(data, 0, data.Length);
					stream.Flush();

					int i = -1;
					i = stream.Read(data, 0, 1);
					var letra = "";
					responseData = String.Empty;

					while (letra != ((char)3).ToString())
					{

						i = stream.Read(data, 0, 1);
						letra = System.Text.Encoding.ASCII.GetString(data, 0, i);
						if (letra != ((char)3).ToString())
						{
							responseData += letra;
						}

					}

					retorno = responseData;

					stream.Close();
					cliente.Close();

					return retorno;
				}
			}
			catch (Exception ex)
			{
				retorno += "ERRO: " + ex.Message;

				return retorno;
			}

		}

 

Consultor SAC ACBr Juliomar Marchetti
 

Projeto ACBr

skype: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br
MVP_NewLogo_100x100_Black-02.png
 

 

Link para o comentário
Compartilhar em outros sites

Agora, Juliomar Marchetti disse:

Bom dia!

estranho pois o código que está falando tem o connect e o disconnect a menos que esteja tratando diferente.


public static string ComandoACBR(string comando)
		{
			var retorno = "";

			try
			{
				using (var cliente = new TcpClient())
				{
					String responseData = String.Empty;
					Byte[] data = new Byte[512];

					cliente.Connect("127.0.0.1", 3434);

					if (String.IsNullOrEmpty(comando)) { comando = "NFE.StatusServico"; }

					// concatena na string com o comando os códigos para o monitor entender
					comando += "\r\n.\r\n";

					// abre um stream para comunicação
					NetworkStream stream = cliente.GetStream();

					// lê o que possivelmente estiver sendo enviado pelo monitor
					Int32 bytes = stream.Read(data, 0, data.Length);

					// traduz os bytes em string
					responseData = System.Text.Encoding.ASCII.GetString(data, 0, bytes);


					// Traduz a string para bytes
					data = System.Text.Encoding.ASCII.GetBytes(comando);

					// envia o comando
					stream.Write(data, 0, data.Length);
					stream.Flush();

					int i = -1;
					i = stream.Read(data, 0, 1);
					var letra = "";
					responseData = String.Empty;

					while (letra != ((char)3).ToString())
					{

						i = stream.Read(data, 0, 1);
						letra = System.Text.Encoding.ASCII.GetString(data, 0, i);
						if (letra != ((char)3).ToString())
						{
							responseData += letra;
						}

					}

					retorno = responseData;

					stream.Close();
					cliente.Close();

					return retorno;
				}
			}
			catch (Exception ex)
			{
				retorno += "ERRO: " + ex.Message;

				return retorno;
			}

		}

 

Bom dia!
Exatamente isso , pelo que eu testei ele finaliza a conexão de envio , mas quando eu mando o comando de enviar e-mail , é informado que foi enviado , dai eu mando o de impressão , mas o de e-mail ainda está enviando e acaba que não finaliza a conexão do enviar e-mail , ou seja , dai que se perde as conexão e o meu sistema espera o retorno do ACBR .

Link para o comentário
Compartilhar em outros sites

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