package br.com.centralit.citcorpore.comm.server;
import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.net.Socket;
import br.com.citframework.util.UtilTratamentoArquivos;
public class ThreadTrataComunicacao extends Thread {
private Socket sockClient = null;
public ThreadTrataComunicacao(Socket sockClientParm){
this.sockClient = sockClientParm;
}
@Override
public void run() {
if (sockClient == null){
System.out.println("N�o h� nada pra fazer! Comunica��o fechada!");
System.out.println("Comunica��o encerrada!");
return;
}
while(true){
String dadoRecebido = "";
// Aguarda por algum dado e imprime a linha recebida quando recebe
try {
if (sockClient == null || sockClient.isClosed() || !sockClient.isConnected()){
System.out.println("Comunica��o encerrada!");
return;
}
// Declaro o leitor para a entrada de dados
BufferedReader entrada = null;
// Cria um BufferedReader para o canal da stream de entrada de dados
// do socket s
try {
entrada = new BufferedReader(new InputStreamReader(sockClient.getInputStream()));
} catch (IOException e) {
System.out.println("Algum problema ocorreu para receber dados do socket.");
System.out.println("Comunica��o encerrada!");
e.printStackTrace();
break;
}
String dadoRecebidoAux = entrada.readLine();
if(dadoRecebidoAux != null){
dadoRecebido = new String(dadoRecebidoAux.getBytes());
}
System.out.println(dadoRecebido);
try{
PrintStream ps = null;
ps = new PrintStream(sockClient.getOutputStream());
}catch (Exception e) {
e.printStackTrace();
}
} catch (IOException e) {
System.out.println("Algum problema ocorreu na hora de imprimir os dados do socket.");
System.out.println("Comunica��o encerrada!");
e.printStackTrace();
break;
}
if (dadoRecebido != null && dadoRecebido.equalsIgnoreCase("GET-INVENTORY")){
System.out.println("Solicita��o de inventario!");
try{
PrintStream ps = null;
ps = new PrintStream(sockClient.getOutputStream());
File diretorio = new File("C:\\");
if (diretorio != null){
for ( int i = 0; i < diretorio.listFiles().length ; i++ ){
if (diretorio.listFiles()[i].getName().endsWith(".xml") ||
diretorio.listFiles()[i].getName().endsWith(".XML") ||
diretorio.listFiles()[i].getName().endsWith(".ocs")){
File f = new File(diretorio.listFiles()[i].getAbsolutePath());
f.delete();
}
}
}
try {
Runtime.getRuntime().exec("D:/CentralIT/ocs/OCSInventory.exe /local=c:\\ /xml=c:\\");
} catch (IOException e) {
e.printStackTrace();
}
boolean x = true;
while(x){
diretorio = new File("C:\\");
if (diretorio != null){
for ( int i = 0; i < diretorio.listFiles().length ; i++ ){
if (diretorio.listFiles()[i].getName().endsWith(".xml") ||
diretorio.listFiles()[i].getName().endsWith(".XML")){
String textoXML = UtilTratamentoArquivos.getStringTextFromFileTxt(diretorio.listFiles()[i].getAbsolutePath());
textoXML = textoXML.replaceAll("\n", "");
textoXML = textoXML.replaceAll("\r", "");
ps.println(textoXML);
x = false;
break;
}
}
sleep(5000);
}
}
}catch (Exception e) {
e.printStackTrace();
}
try {
sleep(5000); //Aguarda um tempo antes de morrer! Isto eh necessario pra garantir que os dados cheguem ao client socket do outro lado!
} catch (InterruptedException e) {
}
break;
}
}
}
}