Anterior  Próximo

Navegação:  e-Forms NFC-e 4.8.2.0 > Manual de Integração e-Forms NFC-e > Integração Agente para o PDV > Entrada > Entrada via Socket (TCP)

Componente de Conectividade

Importante:

Os conteúdos abaixo são exemplos, porém as estruturas são reais e devem ser seguidas. Junto com as linhas e tags correspondentes referentes à funcionalidade, segue também a implementação a ser realizada.

 

Existem 2 dos 3 parâmetros passados que merecem atenção:
oIP: É que trata o endereço do Agente em que vai se conectar, pode ser o IP local ou 172.0.0.1;
oPort: É a porta de comunicação que deve ser estabelecida com o Agente. Deve ser a mesma setada no arquivo CONFIG.PROPERTIES na propriedade socketPort, que subirá o servidor socket. É uma porta TCP que deve estar liberada localmente no computador Agente para permitir a comunicação e por padrão a sugestão é colocar na 9000.

 

Exemplo de Config Properties utilizando socketPort:

 

xms=32m

xmx=64m

serverUrl=http://localhost:8080

token=1c0f6919-81e3-4b25-a41a-96fb9e2b0638

enterpriseId=NDDigital

sourceId=01

proxy=;;;;

socketPort=8081

 

 

Este é um exemplo do componente/método connect que invoca o socket em JAVA utilizado nos exemplos acima:

Envio:

public static String connect(String ip, int port, String msg) {

try {

// Faz a conexão na PORTA passada pelo parâmetro

socket = new Socket();

socket.connect(new InetSocketAddress(ip, port), 20000); // Endereço IP, porta e timeout, este último muito importante que deve ser calibrado pela necessidade do cliente

// Conexão aceita pelo server

outputStream = new ObjectOutputStream(socket.getOutputStream());

// ---------- Envio da String para o server

try {

OutputStream os = socket.getOutputStream();

OutputStreamWriter osw = new OutputStreamWriter(os);

BufferedWriter bw = new BufferedWriter(osw);

bw.write(msg); // Escreve a mensagem

bw.flush();

os.close();

osw.close();

bw.close();

} catch (IOException e) {

                       System.out.println("ERROR - Não foi possível ler os dados da mensagem.");

}

try {

outputStream.writeObject(msg); // Output na String para o server receber

} catch (IOException e) {// Caso ocorra uma exceção ao enviar a mensagem, deve ser tratada aqui:

System.out.println("ERROR - Não foi possível enviar a mensagem ao servidor.");

                 }

                 System.out.println("INFO - O arquivo foi processado com sucesso");

}

catch (IOException e) { //Caso ocorra um erro de conexão, deve ser tratada aqui:

System.out.println("ERROR - Não foi possível estabelecer conexão no IP:" + ip + " PORTA: " + port);

System.out.println(e);

}

 

// O client passa a ser ouvinte

// Recebe uma resposta após a mensagem ser recebido pelo servidor

try {

InputStream is = socket.getInputStream();

InputStreamReader isr = new InputStreamReader(is);     

BufferedReader br = new BufferedReader(isr);

String retorno = new String(br);

is.close();

isr.close();

br.close();                                                                                   

StringBuffer sb = new StringBuffer();

              //Mensagem de sucesso no layout NDD  

              sb.append(retorno);            

mensagemRespostaDoServidor = sb.toString();                           

return mensagemRespostaDoServidor; // Retornará a mensagem que o server gerou;

} catch (Exception e) {//Aqui é a mensagem de erro tratada, caso ocorra um erro no retorno

System.out.println("ERROR - Ocorreu erro ao receber resposta do servidor.");

           System.out.println(e);                                       

return e;                           

}

}