Envio de comandos de sockets

Hola gente soy nuevo en esta comunidad y quisiera hacer una consulta, la cuestion es que quiero hacer un envio de comandos a un gps via tcp, esto claro por medio de sockets ya que los sockets de los gps los almaceno en un hashtable como lo muestro a continuacion:

 dicciongps = new Hashtable<String, Socket>();

la cuestion es que guardo el socket en el hastable despues le hago un hilo para que se comunique con mi sistema y posteriormente cuando le quiero mandar un comando al gps desde un jsp, este crea un socket cliente el cual mi programa lo toma como un gps mas pero el jsp envia los siguientes datos:

- ime del gps
- nombre del comando
- modelo del gps

ojo: el id de mi hashtable es ime con el identifico los sockets de cada gps.

bueno una vez explicado lo anterior te comento mi problema jajaja la cuestion es que recibo los 3 datos anteriores voy busco mi socket y le saco el dataoutputstream y envio el comando pero solo me permite enviarle comandos 2 veces despues de eso no me vuelve a dejar les dejo unos cachos de lo que anteriormente dije:

aqui es donde creo un hilo para enviar el comando de mi clase llamada "Hiloscmd", la cual tiene un extends Thread:

 Hiloscmd con;
con = new Hiloscmd(comando, gps);

y en el evento run de Hiloscmd tengo lo siguiente:

try {
                       
                        System.out.println("\n> Conexion a enviar: " + soc +"\n>        El comando es: "+ServidorHilo.bytesToHex(comando));
                        salidacmd.write(comando);
                        try {
                                Thread.sleep(2000);
                        } catch (InterruptedException e) {
                                e.printStackTrace();
                        }
                        System.out.println(">   Comando enviado...");
                        salidacmd.flush();
                       

                       
                } catch (IOException e) {
                        e.printStackTrace();
                }

y el constructor de la clase Hiloscmd es:

public Hiloscmd(byte[] cmd, Socket s)
        {
                soc = s;
                comando = cmd;
               
                try {
                        salidacmd = new DataOutputStream(soc.getOutputStream());
                       
                } catch (IOException e) {
                        e.printStackTrace();
                }
               
               
        }

y pues basicamente el problema es ese necesito que pueda enviar las veces que quiera un comando y que lo reciba el gps pero me han comentado que puede ser que el socket del gps llega a su vida limite y que solo por eso me deja enviar 2 veces algun comando.

espero me ayuden no se si estoy haciendo algo mal y si es asi agradeceria mucho su ayuda

Comentarios

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de Nopalin

Donde quedó la excepción

Mi estimado, te hace falta poner lo más importante cuando solicitas ayuda a un problema en java, el stacktrace del error.

Además, por que al escribir el comando esperas 2 segundos para hacer flush? no quieres que el envio del comando sea inmediato? y aparte por que esperas 2 segundos?