Estou fazendo uma conexão via socket para transmitir dados para um servidor escrito em C++,
até aí tudo bem, o problema é a forma de transmissão, o exemplo que peguei está usando UDP , mas o servidor lá só aceita de sor TCP.
segue abaixo o trecho principal do código, se alguém puder ajudar com alguma sugestão eu agradeço!
public Form getSucesso() throws IOException {
InputStream is;
if (Sucesso == null) {
// Capturar todos os dados e enviar para o servidor neste ponto
// Se o envio correr bem mostrar tela de sucesso,
// em caso de falha, mostrar tela para refazer envio.
SocketConnection sc = null; // Essa linha esta retornando erro de Exeption NULL !
OutputStream os = sc.openOutputStream();
try {
sc = (SocketConnection) Connector.open("socket://localhost:5000");
} catch (IOException ex) {
ex.printStackTrace();
}
os.write("abbced".getBytes());
os.flush();
os.close();
StringBuffer sb = new StringBuffer();
is = sc.openInputStream();
int c = is.read();
while (c != 1)
{
sb.append((char)c);
c = is.read();
}
Sucesso.append(sb.toString());
Sucesso = new Form("Sucesso", new Item[] { });
Sucesso.addCommand(getExitCommand1());
Sucesso.setCommandListener(this);
// write post-init user code here
}
return Sucesso;
}
Tentei alterar a forma de envio olhando alguns materiais disponiveis na net, mas não consegui acertar a sintaxe correta.
depois de vasculhar bastante, encontrei o que eu precisava, mas ainda estou com problemas, os dados simplesmente nao sao transmitidos, sera que alguém pode dar uma luz?
segue abaixo o trecho principal do codigo
public Form getSucesso() {
//InputStream is;
if (Sucesso == null) {
// Capturar todos os dados e enviar para o servidor neste ponto
// Se o envio correr bem mostrar tela de sucesso,
// em caso de falha, mostrar tela para refazer envio.
try{
SocketConnection sc = (SocketConnection)
Connector.open("socket://201.85.45.123:6000"); // IP do servidor escutando na porta 6000
OutputStream os = null;
try{
os = sc.openOutputStream();
byte[] data = "Essa aqui eh a mensagem que eu quero enviar para o servidor! \n".getBytes();
os.write(data);
} finally{
sc.close();
os.close();
}
} catch (IOException x){
x.printStackTrace();
}
Sucesso = new Form("Sucesso", new Item[] { });
Sucesso.addCommand(getExitCommand1());
Sucesso.setCommandListener(this);
Sucesso.append("Dados enviados com sucesso");
// write post-init user code here
}
return Sucesso;
}
Boone, obrigado por responder, mas não conecta nem com reza braba!
Tanto no emulador como no aparelho celular ele exibe a mensagem que a transferencia pode ser tarifada e pede pra confirmar, eu confirmo e fica na tela “Connecting… Please Wait…”, depois de quase 1 minuto assim ele aparece tela de envio com sucesso, mas meu sniffer nao pegou nenhum dado sendo enviado!
editado: era isso mesmo o que eu estava procurando, até tentei o site da sun, mas o site é tao confuso que nao encontrei! obrigadão! vou testar esses exemplos que tem no site!
editado de novo: Boone, seguinte,
encontrei um site onde se pode ver as especificações tecnicas de cada aparelho celular, porém segundo este mesmo site meu aparelho Não suporta socket…
J2me socket - false - generic http://www.themobiledb.com/devs/lg_mg210_ver1.html
O profile do aparelho é CLDC 1.1 MIDP2.0
é possível que o aparelho tenha MIDP2.0 mas nao suporte socket?
Estou em dúvida sobre a integridade da informação desse site (themobile) pois eu possuo um outro aparelho
T903 da Toshiba, e nele a aplicação roda e transmite normalmente (socket), mas nesse site themobile diz que o aparelho não suporta socket.
Voce conhece algum modelo de aparelho que suporte socket?
Detalhe: no site oficial da LG, a pagina de especificação deste modelo de aparelho está em branco…