Conexão socket entre Movel e Servidor

Pessoal,

Estou fazer um estudo sobre conexão entre celular e um servidor atraves de socket.
Eu já consegui fazer a conexão, transferir texto, arquivo etc…
Mas agora eu estou estudando e precisando é que o celular mantenha a conexão com o servidor.
Eu so consigo fazer as transferências de dados se eu abrir, ler, transfer e fechar a conexão.
Se eu mantiver conectado e precisar enviar varias vezes em momentos diferentes ou mesmo ler varias vezes ele nao funciona. a maioria das vezes ele trava.

Gostaria de saber se é possivel isso que estou tentando ou se é preciso abrir conexao toda vez.

   SocketConnection client = (SocketConnection) Connector.open("", Connector.READ_WRITE, true);
        OutputStream os = null;
        try {           
            os = this.client.openOutputStream();
            os.write("Enviando....".getBytes());
            os.close();
            
            //os.close();
        } catch (IOException x) {
        }

      // lendo
        InputStream is = null;
        try {
            is = this.client.openInputStream();
        } catch (IOException x) {
        }
        is.close();
        cliente.close();

Fera transforma os streams em atributos de classe, e a dica principal é abrir os streams (mesmo qua não use um deles a priore) e só fechar no final da aplicação! o os.close passado meio que bugava a conexão!

// atributos de classe
       OutputStream os = null;  
       InputStream in = null;

 SocketConnection client = (SocketConnection) Connector.open("", Connector.READ_WRITE, true);  

      try {             
          os = this.client.openOutputStream();  
          in = this.client.openInputStream(); 
            
         
      } catch (IOException x) {  
      }  
   
// algum processamento aqui envolvendo threads para leitura/escrita

   
      try {  
           os.close();  
           is.close();  
           cliente.close();      
      } catch (IOException x) {  
      }  
      

entao, este teste eu ja fiz.
abrir 1 vbez a conexao, coloquei os atributos de classe e so dava close neles no final.

mas o write so funcionava 1 vez, na segunda travava, o read nao lia tudo e tb travava.
esse era o problema, ja fiz este teste, pode ser que alguma coisa ta faltando.

Cara tenta usar as classes de Stream encapsuladas (DataInputStream, DataOutputStream) e o flush no final da escrita!