Send SMS por portas diferentes

Alguem saberia me dizer pq quando chamo o Start nas duas classes Connect utilizando portas diferentes, o método send não consegue ser executado pela Thread que chegou depois. E a Exceção que é gerada vem como null. Se pelo menos viesse alguma exceção eu ficaria feliz.

[code]class Send extends UiApplication
{

private MenuItem start = new MenuItem("Start" , 100, 10)
{
    public void run()
    {
                    new Connect().start();
                    new Connect_2().start();
    }
};

private class Connect extends Thread
{    
    public String enviaSms(String tel, String texto)
    {
            String retorno = "";
                try{
                    MessageConnection _dc = (MessageConnection)Connector.open("sms://"+tel+"5000");                
                    Message sms = _dc.newMessage(MessageConnection.TEXT_MESSAGE);
                    TextMessage sms2 = (TextMessage)sms;
                    sms2.setPayloadText(texto);
                    sms2.setAddress("sms://"+tel);   
                    _dc.send(sms2);
                    _dc.close();                            
                } catch (InterruptedIOException ex) {  
                    retorno = ex.getMessage();
                } catch (IOException ex) {  
                    retorno = ex.getMessage();
                } catch (IllegalArgumentException ex) {  
                    retorno = ex.getMessage();
                } catch (SecurityException ex) {  
                    retorno = ex.getMessage();
                }
            return retorno;
    }
    
    public void run()
    {      
        enviaSms("55##@@@@@@@@","teste 1"));
    }
} 

private class Connect_2 extends Thread
{    
    public String enviaSms(String tel, String texto)
    {
            String retorno = "";
                try{
                    MessageConnection _dc = (MessageConnection)Connector.open("sms://"+tel+"5001");                
                    Message sms = _dc.newMessage(MessageConnection.TEXT_MESSAGE);
                    TextMessage sms2 = (TextMessage)sms;
                    sms2.setPayloadText(texto);
                    sms2.setAddress("sms://"+tel);   
                    _dc.send(sms2);
                    _dc.close();                            
                } catch (InterruptedIOException ex) {  
                    retorno = ex.getMessage();
                } catch (IOException ex) {  
                    retorno = ex.getMessage();
                } catch (IllegalArgumentException ex) {  
                    retorno = ex.getMessage();
                } catch (SecurityException ex) {  
                    retorno = ex.getMessage();
                }
            return retorno;
    }
    
    public void run()
    {      
        enviaSms("55##@@@@@@@@","teste 2"));
    }
} 

} [/code]

  1. Qual o objetivo do teu código

  2. o número da porta está colocado ao número do telefone. Ou foi erro de digitação aqui ou é bug mesmo no teu código.verifique

Com relação a porta, foi erro de digitação mesmo. O Objetivo do código é o seguinte: Na minha tese de especialização preciso estudar como as operadoras contralam as conexões pelas portas de sms e mms, preciso entender o nível de segurança e qual estrutura é utilizada nas operadoras com relação especificamente à segurança.
Esse código seria o ponta pé inicial. Estou tentando abrir duas portas em diferentes conexões só que de um mesmo remetente. Quando o código chega no método send, quem chegou por último não consegue enviar. E na exceção não é gerada um tipo qualquer e somente null no objeto Exception. Para que eu possa prosseguir na minha pesquisa, preciso saber: a classe MessageConnection possui algum bug? pq a exceção é desconhecida pelo java? e se existe alguma forma em que eu possa simular essas conexões em paralelo em um mesmo remetente?. Grato…

[code]class Send extends UiApplication
{

private MenuItem start = new MenuItem("Start" , 100, 10)   
{   
    public void run()   
    {   
                    new Connect().start();   
                    new Connect_2().start();   
    }   
};   

private class Connect extends Thread   
{       
    public String enviaSms(String tel, String texto)   
    {   
            String retorno = "";   
                try{   
                    MessageConnection _dc = (MessageConnection)Connector.open("sms://"+tel+":5000");                   
                    Message sms = _dc.newMessage(MessageConnection.TEXT_MESSAGE);   
                    TextMessage sms2 = (TextMessage)sms;   
                    sms2.setPayloadText(texto);   
                    sms2.setAddress("sms://"+tel);     
                    _dc.send(sms2);   
                    _dc.close();                               
                } catch (InterruptedIOException ex) {     
                    retorno = ex.getMessage();   
                } catch (IOException ex) {     
                    retorno = ex.getMessage();   
                } catch (IllegalArgumentException ex) {     
                    retorno = ex.getMessage();   
                } catch (SecurityException ex) {     
                    retorno = ex.getMessage();   
                }   
            return retorno;   
    }   
       
    public void run()   
    {         
        enviaSms("55##@@@@@@@@","teste 1"));   
    }   
}   

private class Connect_2 extends Thread   
{       
    public String enviaSms(String tel, String texto)   
    {   
            String retorno = "";   
                try{   
                    MessageConnection _dc = (MessageConnection)Connector.open("sms://"+tel+":5001");                   
                    Message sms = _dc.newMessage(MessageConnection.TEXT_MESSAGE);   
                    TextMessage sms2 = (TextMessage)sms;   
                    sms2.setPayloadText(texto);   
                    sms2.setAddress("sms://"+tel);     
                    _dc.send(sms2);   
                    _dc.close();                               
                } catch (InterruptedIOException ex) {     
                    retorno = ex.getMessage();   
                } catch (IOException ex) {     
                    retorno = ex.getMessage();   
                } catch (IllegalArgumentException ex) {     
                    retorno = ex.getMessage();   
                } catch (SecurityException ex) {     
                    retorno = ex.getMessage();   
                }   
            return retorno;   
    }   
       
    public void run()   
    {         
        enviaSms("55##@@@@@@@@","teste 2"));   
    }   
}   

}[/code]

Acho que o problema se explica pelo fato de você ter que esperar o envio do 1o SMS ser concluído para se tentar o segundo.

Não pesquisei, mas sei que vc não pode mandar SMS para algumas portas que são reservadas. Daonde vc tirou a porta 5000 e 5001. Tem certeza que elas estão na faixa de portas possíveis de serem usadas em J2ME ? Pq se vc não verificou isto, tem grande chance de também a fonte da sua dor de cabeça ser isto.

Essas portas funcionam sim, se for enviado separadamente, vai sem problemas. O problema ta acontecendo por ser em Threads. O que preciso de ajuda é em entender pq a exceção é desconhecida pelo java.