Menu Travado

Tenho um okCommand(Conectar) no meu menu que inicia o Run() de uma classe que abre uma conexão socket.

Comando no okCommand

Conn.Run(); // conecta e começa a receber dadso…

Começo a receber os dados do socket normalmente porém minha aplicação fica travada neste menu Conectar…

Alguém sabe o que está acontecendo?
Obrigado.

Minha bola de cristal não funciona. :mrgreen:
Poste um pedaço do código…

Tenho meu clientSocket

public class ClientConnection implements Runnable {

StringBuffer sb = null;
InputStream is = null;
OutputStream os = null;
SocketConnection client = null;


public void run() {

    
    try {

        client = (SocketConnection) Connector.open("socket://");

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

  try {

      is = client.openInputStream();

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

  
    try {

        os = client.openOutputStream();

    } catch (IOException ex) {
        ex.printStackTrace();
    }
    
  try {
      
      // envio autenticação...

       os.write();
      

    } catch (IOException ex) {
        ex.printStackTrace();
    }
   
  try {

        int ch;
        sb = new StringBuffer();
        
        while ((ch = is.read()) != -1) {
               sb.append((char)ch);
                   
              
        }
   
 
   } catch (IOException ex) {
        ex.printStackTrace();
    }

}

}

no meu MIDlet abro uma instância do ClientSocket…

ClientConnection Conn = new ClientConnection();

Aí no evento do okCommand eu chamo o Conn.Run();

Ele começa a trazer os dados corretamente, mas a tela fica travada no meu com a opção okCommand…

Deu pra entender?
Obrigado.

Cara, eu posso estar sendo xato, mas ponha seu código entre as tags.

public void escreveCerto() { System.out.println("Tags"); }

Tente fazer assim, em vez de Con.Run(), tente Con.start();

Está implementando Runnable, não tem start(), certo?

Então faça o seguinte

Excelente… Resolveu.

:thumbup:

j0nny, meu aplicativo funciona normal agora no emulador.
Quando coloco pra rodar no Samsung Omnia II com Windows Mobile 6.5 a aplicação abre normal mas na hora que dou o comando de conexão, é perguntado sobre deixar ou não utilzar a rede… rede de baixo nível etc… digo que sim pra tudo, mas não conecta… sabe o que pode ser? Diz também que uma informação strID não foi encontrada…
Obrigado!

[quote=lzoratto]j0nny, meu aplicativo funciona normal agora no emulador.
Quando coloco pra rodar no Samsung Omnia II com Windows Mobile 6.5 a aplicação abre normal mas na hora que dou o comando de conexão, é perguntado sobre deixar ou não utilzar a rede… rede de baixo nível etc… digo que sim pra tudo, mas não conecta… sabe o que pode ser? Diz também que uma informação strID não foi encontrada…
Obrigado![/quote]

Cara, posta a parte do código onde vc faz a conexão pra gnt ver…

public void run() {
    
    try {

       // Conecto com o servidor...

        client = (SocketConnection) Connector.open("socket://");

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

  try {

       is = client.openInputStream();
       os = client.openOutputStream();

      // envio alguns dados...

       os.write(.getBytes());


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

  try {

        int ch;
        sb = new StringBuffer();
        
        while ((ch = is.read()) != -1) {
               sb.append((char)ch);

              // Fico lendo o que tá chegando.......
        }
   
    } catch (IOException ex) {
        ex.printStackTrace();
    }


    Só isso.... funciona normal no emaulador....

    Desculpe pelo código como se coloca da forma que você pediu?

[quote=lzoratto] public void run() {

    try {

       // Conecto com o servidor...

        client = (SocketConnection) Connector.open("socket://");

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

  try {

       is = client.openInputStream();
       os = client.openOutputStream();

      // envio alguns dados...

       os.write(.getBytes());


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

  try {

        int ch;
        sb = new StringBuffer();
        
        while ((ch = is.read()) != -1) {
               sb.append((char)ch);

              // Fico lendo o que tá chegando.......
        }
   
    } catch (IOException ex) {
        ex.printStackTrace();
    }


    Só isso.... funciona normal no emaulador....

    Desculpe pelo código como se coloca da forma que você pediu?

[/quote]

Cara, não é eu q pesso, são regras do fórum :thumbup:
Qual operadora vc usa? Tem plano de dados?

Estou usando rede wi-fi…

Tem algum firewall intermediando?

Nenhum firewall…

Ja verificou também se seu aparelho implementa Socket?
Pq vi alguns aqui no fórum falarem que em determinados aparelhos, o socket n funciona mesmo, só HttpConnection.

O celular é o Samsung Omnia II com Windows Mobile 6.5, você conhece? Vou pesquisar sobre ele aceitar ou não conexões socket. Obrigado.

Será que o fato de meu Midlet não ser assinado, está interrompendo essa conexão socket por não ter permissão?

Não, pois a sua aplicação deve perguntar se vc tem cereteza que quer conectar, certo?

Exato ela pergunta se quero continuar…