Java - Hilo que devuelve variable repetida

 
Vista:

Hilo que devuelve variable repetida

Publicado por Reinaldo (36 intervenciones) el 09/01/2007 20:38:06
Hola.
Tengo el siguiente problema, me conecto via telnet a un msc y me devuelve cierta informacion. Pero cada vez que ejecuto el metodo desde la interfaz grafica el String de retorno se acumula y me devuelve la primera busqueda + la segunda busqueda (cosa que no quiero), no se si es el buffer que se queda lleno u otra cosa, he probado limpiando la variable pero nada.

Adjunto les coloco el codigo a ver si alguien tiene la solucion o alguna idea.

import java.io.*;
import java.net.*;
import java.lang.*;
import java.util.*;
import java.sql.*;

public class Basico_Telnet
{
//ListenToClient thread listenes to the remote host continuously
ListenToClient lt;
BufferedReader br;
PrintWriter pr;
Socket s;
String prevString;
static Constantes cns = new Constantes();
static Comandos cmd = new Comandos();
static Bd db = new Bd();
String miFecha="";
public static String numGlobal="";
public static String result= "0";
public static String ubica="";
public static String numAseguir="";
public String direxion="";
public static void main(String [] args)
{
Basico_Telnet t = new Basico_Telnet();
result= t.connect("10.38.30.100","23","584125975236");
System.out.println(result);
System.out.println(numGlobal);
}

public String connect(String host, String portNumber, String GSM)
{
int port;
int i =1;
numAseguir=GSM;
System.out.println("numAseguir "+numAseguir);
prevString="";


if(host.length() < 1 || portNumber.length() < 1)
{
System.out.println("Puerto o direccion ip invalidos");
return("-1");
}
try
{
prevString = new String("");
port = Integer.parseInt(portNumber);
s = new Socket(host, port);
br = new BufferedReader(new InputStreamReader(s.getInputStream()));
pr = new PrintWriter(s.getOutputStream(), true);


pr.println(cns.USERCARACAS1 + cmd.BARRA_N);
pr.flush();
if (host.compareTo(cns.IPVALENCIA)==0) // es valencia

{pr.println(cns.PASSWORDVALENCIA + cmd.BARRA_N);} // // A pr se le asigna el password de Valencia
else // caracas1, caracas2 o caracas3
{pr.println(cns.PASSWORDCARACAS1 + cmd.BARRA_N);} // a pr se le asigna el Password de caracas1, 2, 3

pr.flush();

pr.println(cmd.COMANDO_CELDA + GSM + cmd.BARRAP_N);
pr.flush();

pr.println(cmd.COMANDO_Z + cmd.BARRA_N);
pr.flush();

pr.println(cmd.COMANDO_Z + cmd.BARRA_N);
pr.flush();
lt=new ListenToClient();

lt.start();

while (lt.receivedTmp.equals(" ")){
{i++;} }

s.close();
lt.listening = false;

if(lt.isAlive() == true)

lt.interrupt();

try{
Thread.sleep(3000);
}
catch (InterruptedException e)
{System.out.println(e);
}
direxion=lt.receivedTmp;
System.out.println("DIREXION "+direxion);
return (lt.receivedTmp);


}
catch(NumberFormatException e)
{
return("-1");
}
catch(IOException e)
{
return("-1");
}
}





class ListenToClient extends Thread
{
boolean listening;
String received;
public String receivedTmp = " ";
public String stringProcesamiento=" ";
String line2;

public ListenToClient()
{
receivedTmp = " ";
listening = true;

}

public void run()
{
while(listening)
{
try
{
received = new String(br.readLine());
prevString= " ";
prevString = new String(prevString + received + cmd.BARRA_N);


if (lt.received.indexOf(cmd.ULTIMA_CELDA) != -1)
{
try {

stringProcesamiento = String.valueOf(Integer.parseInt(lt.received.substring(lt.received.indexOf("/") + 1 , lt.received.indexOf("/") + 6)));
stringProcesamiento = stringProcesamiento.trim();

File File2 = new File(cmd.ARCHIVO_CELDAS);
FileReader FR2 = new FileReader(File2);
BufferedReader BR2 = new BufferedReader(FR2);

while ( (line2 = BR2.readLine()) != null)
{
if (line2.indexOf("#" + stringProcesamiento + "#")!= -1)

receivedTmp= receivedTmp + " " + "Ubicacion:" + line2;
}
//Se busca en BD la información precisa de la Celda

//System.out.println("LA CELDA ES : "+ stringProcesamiento);

// laUbicacion=db.buscandoCelda(stringProcesamiento);

//System.out.println("NUMERO DE LA CELDA"+stringProcesamiento);
//receivedTmp= receivedTmp + " " + "Ubicacion:" + laUbicacion;
receivedTmp= receivedTmp + " " + "Ubicacion: " ;//+ direccion;
ubica=receivedTmp;
receivedTmp= receivedTmp.trim() + "Celda #:" + stringProcesamiento.trim();
receivedTmp= receivedTmp.trim();
numGlobal=stringProcesamiento;
stringProcesamiento = "";
BR2.close();
FR2.close();
}

// Si da error de formato cuando se trata de convertir a numero la celda para buscarla en el archivo,
//se indica que el suiche esta no está arrojando la celda
catch (NumberFormatException f)
{receivedTmp= receivedTmp.trim() + " Celda: No Indicada por el Switch";
}

/*catch (IOException e)
{
System.out.println("Ha ocurrido una excepción del tipo: " + e);

}*/
}
else if (lt.received.indexOf(cmd.ULTIMA_ACTIVACION)!= -1)
{
String strReturn="";

// como lt.received tiene la linea del telnet donde está la fecha,
//entonces a string procesamiento se le va a asignar exactamente la fecha MM-DD HH:MM
stringProcesamiento = lt.received.substring(lt.received.indexOf(":") - 8 , lt.received.indexOf(":") + 3);
miFecha= stringProcesamiento;
receivedTmp= receivedTmp + " " + "Fecha:" + miFecha + " " + ubica;
receivedTmp= receivedTmp.trim();
stringProcesamiento = "";
}

else if (lt.received.indexOf(cmd.DETACH)!= -1)
{
// como lt.received tiene la linea del telnet donde está la Causa de desconexión,
// Y posee un EIAF entonces a stringprocesamiento se le va a agregar "Telefono apagado"
System.out.println("telefono apagado o fuera del area de cobertura");
receivedTmp= receivedTmp + "Motivo: Desconexión";
stringProcesamiento = "";
}




else if (lt.received.indexOf(cmd.DESCONOCIDO)!= -1 )
{ receivedTmp= "TELEFONO NO ENCONTRADO"; }




}
catch(IOException e)
{
//System.out.println("Connection closed.");
}
catch(NullPointerException e)
{
listening = false;

}
}
}
}
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Hilo que devuelve variable repetida

Publicado por luis (88 intervenciones) el 09/01/2007 20:55:56
hola perdon y tus clases Constantes, Comandos, BD?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Hilo que devuelve variable repetida

Publicado por Reinaldo (36 intervenciones) el 09/01/2007 21:26:58
Ok.
*) La Clase comandos contiene los comandos del msc. Son comandos propios de este aparato.
*) La clase Bd la coloque porque buscaba una informacion en la Base de datos pero no la uso en el codigo ya (se me olvidó borrarla)
*) La clase constantes contiene las direcciones IP para el telnet, el puerto, las claves y logines de usuario.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Hilo que devuelve variable repetida

Publicado por luis (88 intervenciones) el 09/01/2007 23:21:34
por eso pero me las puedes proporcionar para poder analizar tu codigo? gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Hilo que devuelve variable repetida

Publicado por Reinaldo (36 intervenciones) el 10/01/2007 01:42:49
Perfecto pero te lo envio a tu correo porque acá excederá el tamaño maximo de 1000 caracteres. Lo otro me lo respondes por aqui para continuar fomentando el crecimiento del foro. ;)
Gracias Luis!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Hilo que devuelve variable repetida

Publicado por Reinaldo (36 intervenciones) el 10/01/2007 01:54:19
import java.io.*;
import java.net.*;
import java.lang.*;
import java.util.*;

/**
*
* @author jrchacon
*/
public class Constantes {

static String PASSWORDCARACAS2= "mMCALGMQAMp";
static String PASSWORDVALENCIA = "mMCALGMQAMp";
static String PASSWORDCARACAS1 = "mMCALGMQAMp";
static String USERVALENCIA = "RHADDA";
static String USERCARACAS1 = "rhadda";
static String USERCARACAS2 = "rhadda";
static String PUERTO = "23";
static String IPCARACAS2 = "10.20.55.45"; // dir Ip MSC Ccs1
static String IPCARACAS1 = "10.11.100.23"; //dir Ip MSC Ccs2
static String IPVALENCIA= ""; // dir Ip MSC valencia
static String global_us="";
static String num_seg="";
final String USER_DES = "Comuniquese con el administrador";
final String USER_NON= "Usuario no registrado";
final String CAMPOS_VACIOS = "El campo Usuario o Password están vacios";



public Constantes() {
}
/*/Metodo para buscar en BD los valores de:
PASSWORDCARACAS2
PASSWORDVALENCIA
PASSWORDCARACAS1
USERVALENCIA
USERCARACAS1
USERCARACAS2 y luego ser usados en el Telnet.
Metodo llamado desde la clase Telnet_Basico*/

public void search(){
//Bd bd = new Bd();
//bd.conexion();
//bd.miConexion();
//bd.ejecutarComando();
}

}


import java.lang.*;

/**
*
* @author jrchacon
*/
public class Comandos {

final String ARCHIVO_CELDAS = "D:\\SMS\\celdas.txt";

final String COMANDO_CELDA = "ZMVO:MSISDN="; //para la ubicacion de la celda
final String COMANDO_Z = "Z;";
final String ULTIMA_CELDA = "LAST USED CELL ID";
final String ULTIMA_ACTIVACION = "LAST ACTIVATE DATE";
final String DETACH = "DETACH CAUSE .................................. EAIF";
final String DESCONOCIDO = "UNKNOWN";
final String BARRAP_N = ";\n";
final String BARRA_N = "\n";


/** Creates a new instance of Comandos */
public Comandos() {
}



}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Hilo que devuelve variable repetida

Publicado por luis (88 intervenciones) el 10/01/2007 03:55:31
hola estoy analizando tu codigo una pregunta
tu construyes el servidor de sockets o te conectas a un puerto en que ya hay un servidor escucha? porque si es el primer caso necesitaria el servidor gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Hilo que devuelve variable repetida

Publicado por reinaldo (36 intervenciones) el 10/01/2007 04:02:20
Me conecto al servidor escucha. Es un msc (mobile switch center) Es de una compañia de telecomunicaciones. Yo le mando un comando por medio del socket y el me devuelve un cierto numero. con ese numero construyo el string a traves de stringprocesamiento y receivedTmp. El problema es que me retorna la primera vez un string y la segunda el string viejo mas el nuevo y asi sucesivamente.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Hilo que devuelve variable repetida

Publicado por luis (88 intervenciones) el 10/01/2007 17:18:15
si entiendo el procedimiento el problema es que yo no me puedo conectar a esa direccion en ese puerto desde mi pc
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Hilo que devuelve variable repetida

Publicado por Reinaldo (36 intervenciones) el 10/01/2007 18:55:24
Cierto. no puedes hacerlo, aqui coloco las salidas que me da el programa para que tengas una idea. De igual forma te comento que toda le ejecución es exitosa excepto cuando se hace más de una vez.

1era VEZ:

numAseguir 6567475
Fecha:01-09 16:33 Ubicacion:#312#CCCTOUT2 CCCT Av la Estancia. Nivel P.B. Estacionamiento Oeste. Mun. Baruta. Ubicacion:Celda #:312

2da VEZ:
numAseguir 7817415
Fecha:01-09 16:35 Fecha:01-09 16:33 Ubicacion:#312#CCCTOUT2 CCCT Av la Estancia. Nivel P.B. Estacionamiento Oeste. Mun. Baruta. Ubicacion: Ubicacion:#1462#UCV2 Av.Ciudad Universitaria Edif.Coromoto al lado de TOCARS Ubicacion:Celda #:1462
1462
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar