[Sockets] Conectando celular com Servidor

12 respostas
J

Olá pessoal
Estou com dificuldades de conectar o celular com sevidor
tenho uma aplicação que acessa o servidor e faz uma requisição via socket. No emulador funfa beleza mas quando eu tento com celular nada.
O acesso é via wifi de um nokia 5530. Será que o Problema é a configuração da rede.

Segue..

Classe Servidor

p
ackage Servidor;

import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.Socket;

/**
 *
 * @author CamilaAliceHilton
 */
class SocketSoma {
private final Socket socket;
    public SocketSoma(Socket socket) {
        this.socket = socket;
    }

    void soma() throws IOException {
        DataInputStream in = new DataInputStream(socket.getInputStream());
        DataOutputStream out = new DataOutputStream(socket.getOutputStream());
       int n1 = in.readInt();
        int n2 = in.readInt();
      out.writeInt(n1+n2);
      in.close();
      out.close();
      socket.close();
    }
}
classe cliente
class ClientesomaJ2me {

    public ClientesomaJ2me() {
    }

    int soma(int s1, int s2) throws IOException {
        SocketConnection socket = (SocketConnection) Connector.open("socket://192.168.1.2:4444");
          DataInputStream in = socket.openDataInputStream();
        DataOutputStream out = socket.openDataOutputStream();
         out.writeInt(s1);
       out.writeInt(s2);
       int soma = in.readInt();
     in.close();
     out.close();
     socket.close();

        return soma;
    }

}

12 Respostas

quikkoo

vá nas configurações do aparelho, ñ me lembro exatamente onde, mas verifique se a maquina virtual dele permite que a midlet faça conexões, se nao permitir apenas habilite a opção

E

Se a url que você postou não for apenas um exemplo (“socket://192.168.1.2:4444”) você está tentando acessar um servidor na sua LAN o que não é possivel com o aparelho de celular. Se for só exemplo tudo bem.

J

Na verdade estou tentando exatamente issu, conectar ao servidor da minha rede local, não é possivel? Então como deveria proceder? Obrigado pela ajuda.

J

Srs. mais uma dúvida…rsr
como eu faço para dividir os pacotes. Por exemplo,
faço uma equisição ao servidor e ele me retorna um array de strings String a[];. Logo em seguida faço outra requisição e ele me retorna outro array de string, String b[];. Como eu faço para separa os pacotes. Há essa Possibilidade?
Aguardo

OliveirakunJava

Isso é perfeitamente possível! Para conectar uma aplicação de celular a um servidor de uma LAN local, basta que o celular possua Wi-fi. Vc deve configurar as propriedades da sua aplicação para que ela utilize a conexão Wi-fi.

O que vc quer dizer com pacotes? vc quer separar as mensagens que são enviadas pelo servidor?

E

OliveirakunJava. Como eu faria uma conexão do celular com um servidor numa rede local (LAN)? Tipo “socket://192.168.1.2”, por exemplo.

Um abraço.

OliveirakunJava

edwagner:
OliveirakunJava. Como eu faria uma conexão do celular com um servidor numa rede local (LAN)? Tipo “socket://192.168.1.2”, por exemplo.

Um abraço.

Cara, é como eu disse antes: Seu celular precisa possuir Wi-fi e sua rede LAN deve possuir um ponto de acesso Wireless. No celular conecte a rede Wireless e abra sua aplicação em seguida ou se preferir entre nas configurações do aplicativo e deixe a conexão Wi-fi como conexão padrão da sua aplicação.
O resto é igual vc faz no desktop: Crie um socket cliente para se conectar ao servidor, se vc conhece sockets então não tem segredo.

Boa sorte!

Gabriel_Soares

Me desculpem por reviver o tópico, mas é para não criar outro quase igual.

Se eu conectar na rede Wi-Fi do meu vizinho, e quiser as requsições do meu PC, que também está ligado, como deve ser feito?

matheusconan

Me desculpem por reviver o tópico, mas é para não criar outro quase igual.

Se eu conectar na rede Wi-Fi do meu vizinho, e quiser as requsições do meu PC, que também está ligado, como deve ser feito?

Você tem que saber o IP da sua máquina, caso ele seja físico vc configura no programa, se achar mais fácil, senão, vc coloca à mão sempre que for conectar…

Vale lembrar que configurar direto na aplicação não é boa prática, nem média, nem ruim, é horrível… Mas talvez no seu caso especificamente seja viável.

Aí é só fazer o procedimento padrão com sockets…

Para mais detalhes vá em java.sun.com depois em APIs Java e procure java.net!

[]'s

Gabriel_Soares

Uma boa prática seria uma prática inadequada?

java.net seria a API que fará a conexão?

quikkoo

ñ, vai ser a javax.microedition.io

ele quiz dizer q é uma pratica ruim vc pedir q o usuário da sua aplicação que digite o ip do servidor toda vez q ele for usá-la
e tb que pode ser viável pra vc no momento caso vc só tenha um ip dinamico disponivel

flw, t+

matheusconan

Exatamente o que o quikkoo disse!

Mas só pra esclarecer, a API java.net é utilizada para fazer comunicação em rede…
Não sei se JME utiliza exatamente esta API ou alguma específica… olhe o comentário do quikkoo!

Talvez dê pra usar esta API em JME tb! Precisa dar uma pesquisada…

[]'s

Criado 23 de maio de 2010
Ultima resposta 23 de dez. de 2010
Respostas 12
Participantes 6