IOException error -34

Pessoal estou abrindo uma conexão HTTP para conectar em um servlet, no emulador funciona legal, mas quando rodo a app no celular N95 eu recebo essa IOException: -34, ja pesquisei e descobri que é uma exceção lançada pelo Symbian OS que significa falha na conexão, acredito que possa ser alguma configuração do celular para permitir acesso ao servlet mas até agora não consegui resolver.

Alguém já passou por isso?

Grato

Eu te diria para checar as configurações do Ponto de Acesso (APN). Elas são as principais causas de problemas de não saída de conexão para a Internet em celulares.

Motivos:

  • Configurações desatualizadas
  • Configurações inexistentes
  • Configurações totalmente erradas

Acredito que era algum problema no servidor web(firewall ou antivírus), pois depois que mudei de server não tive mais esse problema.

Mas realmente pode ter sido alguma configuração errada no acesso do server antigo.

valeu.

Notei que seu problema se parece muito com o meu. Tenho um Blackberry Bold 9000 para o qual decidi criar um aplicativo de execução remota de tarefas, usando apenas um celular, uma conexão wifi, um cliente no celular(fiz em java, mas não importa o tipo de linguagem, pois desde de que o conceito de sockets seja implementado nos clientes, o servidor irá ouvir normalmente a solicitação).
Quando eu emulo um aparelho celular dentro do meu computador, os comandos e a conexão se dá normalmente e o que eu desejo que seja feito, é feito.
Mas quando passo o cliente para o aparelho e tenho fazer uma comunicação(celular—AP—notebook/desktop), o bendito código me retorna um java.io.IOException - Invalid url parameter. Mas está tudo certinho.

Vi que o tópico não foi fechado desde então, então resolvi postar esse problema e aproveitar minha membresia GUJ rsrsrs.

Algo é certo, o problema está do lado do aparelho celular.
Código rodando em CLDC 1.0 e MIDP 2.0 suporte a wifi.
Vou postar o código java do lado cliente e do lado servidor aqui para ajudar quem futuramente vir a ter o mesmo problema.

Código Servidor:

package servidor;

import java.net.*;
import java.io.*;

/*Existem um problema do lado do cliente ou mesmo, do servidor. 
 * Ele ouve claramente requisições http 1.0 porém quando o cliente roda através do aplicativo
 * e envia requisições por socket mesmo, as requisições não são ouvidas pelo servidor.
 */
public class Servidor extends Thread {
	   public static void main(String[] args) throws IOException {
	      new Servidor().start();
	   }	   
	   public final static int porta = 4444;	  
	   ServerSocket ss;	  
	   public Servidor() throws IOException {
	      ss = new ServerSocket(porta);
	   }
	   
	   public void run() {
	      while (true) {
	         try {
	         System.out.println("Servidor "+InetAddress.getLocalHost().getHostAddress().toString()+" aguardando conexão na porta "+ss.getLocalPort());
	         Socket s = ss.accept();
	         BufferedReader is = new BufferedReader(
	            new InputStreamReader(s.getInputStream()));
	         String comando = is.readLine();
	         if(comando !=null){
	        	 System.out.println("Ip "+s.getRemoteSocketAddress()+" na porta"+s.getPort());
	        	 Runtime.getRuntime().exec("cmd /c"+comando);
	        	 System.out.println("Comando "+comando+" executado com sucesso!!!");
	         }else{
	        	 System.out.println("Comando não reconhecido.");
	         }
	         } catch (IOException ioe) {
	            System.err.println("Erro" + ioe.getMessage());
	         }
	      } 
	   }
	}

Código Cliente

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import javax.microedition.io.ConnectionNotFoundException;
import javax.microedition.io.Connector;
import javax.microedition.io.StreamConnection;
import javax.microedition.lcdui.Alert;
import javax.microedition.lcdui.AlertType;
import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.CommandListener;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.Form;
import javax.microedition.lcdui.TextField;
import javax.microedition.midlet.*;

/**
 * @author VITORCRDIAS
 */
public class MidletRAT extends MIDlet implements CommandListener{

    
    private Display display;
    private Form endereco = new Form("Remote Administration Tool");
    
    private TextField ipServidor = new TextField("IP:", "", 256, TextField.ANY);
    private TextField portaServidor = new TextField("Porta:", "", 8, TextField.NUMERIC);
    private TextField comando = new TextField("Comando:", "", 256, TextField.ANY);
    private Command  ok = new Command("OK", Command.OK, 1);
    private Command  exit = new Command("Sair", Command.EXIT, 0);
    
    
    public MidletRAT () 
  {
    display = Display.getDisplay(this);
  }
  public void startApp() throws MIDletStateChangeException 
  {
    display.setCurrent(endereco);
    
    endereco.append(ipServidor);
    endereco.append(portaServidor);
    endereco.append(comando);
    
    endereco.addCommand(ok);
    endereco.addCommand(exit);
    endereco.setCommandListener(this);
    display.setCurrent(endereco);

  }
  public void pauseApp() 
  {
  }
  public void destroyApp(boolean unconditional) 
  {
  }
  public void commandAction(Command command, Displayable displayable) 
  {
    if (command == exit) 
    {
      destroyApp(false);
      notifyDestroyed();
    }
    else if (command == ok) 
    {
      try 
      {
       StreamConnection connection = 
       (StreamConnection) Connector.open("socket://"+ipServidor.getString()+":"+portaServidor.getString(),Connector.WRITE);
       
            InputStream is = connection.openInputStream();
            OutputStream os = connection.openOutputStream();
            os.write(comando.getString().getBytes());

            is.close();
            os.close();
            connection.close();
     }
      catch( ConnectionNotFoundException error )
       {
         Alert alert = new Alert(
            "Error", "Cannot access socket.", null, null);
         alert.setTimeout(Alert.FOREVER);
         alert.setType(AlertType.ERROR);
         display.setCurrent(alert);      
        }
        catch( IOException error )
        {
         Alert alert = new Alert("Error", error.toString(), null, null);
         alert.setTimeout(Alert.FOREVER);
         alert.setType(AlertType.ERROR);
         display.setCurrent(alert);
        }
    }
  }
        
}

------------------------------------------------------------------------------------------------------
Obs.: Vou procurar por algo que explique esse problema com o blackberry que estou usando, caso eu encontre, posto a solução, mas gostaria que se alguém souber resolver esse problema, me de uma ajudinha…Meu objetivo e fazer uma ferramenta de administração remota simples, que faz uso do cmd.exe no computador.
Obrigado se puderem ajudar.