[TUTORIAL] Trabalhando com Socket no Android
| Autor |
Mensagem |
|
turim
Application Life Cycle
Data de registro: 31 Mai 2009, 11:37 Mensagens: 259
|
 [TUTORIAL] Trabalhando com Socket no Android
Irei monstrar neste tutorial como podemos trabalhar com Sockets no Android. Não existe muita diferença em relação a Sockets do Java. Iremos fazer uma aplicação como exemplo, de envio de mensagens, a partir de um cliente em Android para um Servidor Java. Sendo que também é possível implementar o Servidor no Android, ou até mesmo ele funcionar como Servidor e Cliente ao mesmo tempo, vai da criatividade de cada um. Primeiro passo é criar um projeto no Android, vamos chamá-lo de ClienteAndroid. E adicionar as permições no AndroidManifest.xml <uses-permission android:name="android.permission.INTERNET"></uses-permission> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>
Alterando o main.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical"> <LinearLayout android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" android:layout_weight="10" android:id="@+id/layoutMensagem"> <TextView android:text="" android:layout_width="wrap_content" android:id="@+id/lbIp" android:layout_height="wrap_content"></TextView> <TextView android:layout_width="fill_parent" android:text="Servidor Desconectado" android:layout_height="wrap_content" android:id="@+id/lbIp" android:gravity="center_horizontal"></TextView> <TextView android:text="Ip" android:layout_width="wrap_content" android:gravity="left" android:id="@+id/textView1" android:layout_height="wrap_content"></TextView> <EditText android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="10.0.2.2" android:id="@+id/edIp"></EditText> <TextView android:text="Porta" android:id="@+id/textView2" android:layout_width="wrap_content" android:layout_height="wrap_content"></TextView> <EditText android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="1234" android:id="@+id/edPorta"></EditText> </LinearLayout> <LinearLayout android:layout_width="fill_parent" android:id="@+id/linearLayout2" android:layout_height="wrap_content" android:orientation="horizontal"> <Button android:layout_width="wrap_content" android:text=">>Conectar" android:id="@+id/btnConectar" android:layout_height="wrap_content" android:layout_weight="1"></Button> </LinearLayout> </LinearLayout>
Foram adicionados ao layout dois EditText, para informar o Ip e a porta do servidor que o Android vai se conectar para enviar as mensagens e também um botão onde iniciar a conexão com esse servidor. Agora vamos criar outro layout, com o nome de form_msg.xml Essa tela irá disponibilizar um EditText pra envio de mensangem ao servidor, além, de um botão para desconectar. Form_msg.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical"> <LinearLayout android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" android:layout_weight="10" android:id="@+id/layoutMensagem"> <TextView android:layout_width="fill_parent" android:text="" android:layout_height="wrap_content" android:id="@+id/lbIp"></TextView> <TextView android:layout_width="fill_parent" android:text="Mensagem" android:layout_height="wrap_content" android:id="@+id/lbTitulo"></TextView> <EditText android:layout_width="fill_parent" android:text="" android:layout_height="wrap_content" android:id="@+id/edMensagem"></EditText> <Button android:text=">>Enviar" android:id="@+id/btnEnviar" android:layout_height="wrap_content" android:layout_width="fill_parent"></Button> </LinearLayout> <LinearLayout android:layout_width="fill_parent" android:orientation="vertical" android:id="@+id/linearLayout2" android:layout_height="wrap_content"> <TextView android:layout_width="fill_parent" android:text="Servidor-> Conectado" android:id="@+id/lbStatus" android:layout_height="wrap_content"></TextView> </LinearLayout> <LinearLayout android:layout_width="fill_parent" android:id="@+id/linearLayout2" android:layout_height="wrap_content" android:orientation="horizontal"> <Button android:layout_width="wrap_content" android:text=">>Desconectar" android:id="@+id/btnDesconectar" android:layout_height="wrap_content" android:layout_weight="1"></Button> </LinearLayout> </LinearLayout>
Até aqui nenhum segredo, só construímos os layouts necessários para o funcionamento da nossa aplicação. Vamos ver agora a classe ConnectionSocket.java, que irá, de fato, conectar com nosso servidor. ConnectionSocket.javapublic class ConnectionSocket { private static ConnectionSocket connection; private int porta; private String host; private Socket socket; private Sender sender; public static final int CONNECTED = 1; public static final int ERROR = 2; public static final int SENDING_MESSAGE = 3; public static final int DISCONNECTED = 4; private Message msg; private DataOutputStream out; private Handler handler; // Handle para notificações na tela private ConnectionSocket (String host, String porta ) { this. host = host; this. porta = Integer. parseInt(porta ); } // Método que cria Objecto ConnectionSocket public static ConnectionSocket createConnection (String host, String porta ) { connection = new ConnectionSocket (host, porta ); return connection; } // Retorna conexão atual public static ConnectionSocket getCurentConnection () { return connection; } // Conecta com o Servidor public void connect () throws Exception { this. socket = new Socket(host, porta ); out = new DataOutputStream(socket. getOutputStream()); } // Inicia Thread para envio de mensagens public void startSender (Handler handler ) { sender = new Sender (out, handler ); new Thread(sender ). start(); this. handler = handler; } // Método set mensagem para envio public void senMessage (String mensagem ) { sender. setMessage(mensagem ); } // Método para disconectar do Servidor public void disconnect () throws Exception { sender. disconnect(); socket. close(); if (handler != null) { msg = new Message (); msg. arg1 = ConnectionSocket. DISCONNECTED; handler. sendMessage(msg ); } }} Essa classe funciona como uma fábrica de conexões, por este motivo seu construtor é privado, assim sua instanciação direta não é permitida. Agora vamos ver a classe Sender.java, que será responsável por enviar as mensagens ao Servidor, lembrando que eu estou simplemente enviando a mensagem, e não me preocupando obter uma resposta do Servidor. Sender.javaclass Sender implements Runnable { private DataOutputStream out; private boolean running = true; private Handler handler; private Message msg; private String sendMessage; public Sender (DataOutputStream out, Handler handler ) { this. out = out; this. handler = handler; } @Override public void run () { while (running ) {// Enquanto estiver executando try { if (sendMessage != null) { // Se existir uma mensagem para // enviar msg = new Message (); msg. arg1 = ConnectionSocket. SENDING_MESSAGE; handler. sendMessage(msg ); // Notifica Handler out. writeUTF(sendMessage ); // Escreve mensagem out. flush(); sendMessage = null; // Seta nulo na mensagem } } catch (IOException e ) { e. printStackTrace(); msg = new Message (); msg. arg1 = ConnectionSocket. ERROR; msg. obj = e. getMessage(); handler. sendMessage(msg ); running = false; } } try { out. close(); } catch (IOException e ) { e. printStackTrace(); } } public boolean isRunning () { return running; } public void setRunning (boolean running ) { this. running = running; } public void stop () { running = false; } public void setMessage (String message ) { this. sendMessage = message; } public void disconnect () throws Exception { msg = new Message (); msg. arg1 = ConnectionSocket. DISCONNECTED; handler. sendMessage(msg ); // Notifica Handler running = false; out. close(); }} Primeiramente a classe implementa Runnable, ou seja, será uma Thread, e só será finalizado quando o atributo runningse tornar false. Agora vamos as Activities. Na Activity inicial vamos implementar OnClickClistener, para interceptar o clique no botão de conectar. ClienteAndroid.java @Override public void onClick (View view ) { if (view == btnConectar ) { // Clicou no botão Conectar try { // Tenta iniciar uma conexão com o Servidor de Socket ConnectionSocket connection = ConnectionSocket . createConnection(edIp. getText(). toString(), edPorta . getText(). toString()); connection. connect(); // Inicia tela para envio de mensagens startActivity (new Intent (this, MensagemAndroid. class)); } catch (Exception e ) { // Mostra erro na tela Toast. makeText(this, "Não foi possível conectar->" + e. getMessage(), Toast. LENGTH_LONG). show(); } } } Ao clicar no botão conectar, o método createConnection da classe Connectation socket vai tentar conectar ao servidor, se não ocorrer nenhum Exception a tela de envio de mensagens será aberta. A classe Activity responsável pela tela de envio é MensagemAndroid.java. MensagemAndroid.javapublic class MensagemAndroid extends Activity implements OnClickListener { private TextView lbStatus; private EditText edMensagem; private Button btnDesconectar; private Button btnEnviar; private Handler handler = new Handler () { public void handleMessage (android. os. Message msg ) { // Verifica mensagem do Handler e mostra na tela synchronized (msg ) { switch (msg. arg1) { case ConnectionSocket. CONNECTED: lbStatus. setText("Conectado"); break; case ConnectionSocket. SENDING_MESSAGE: lbStatus. setText("Enviou Mensagem"); edMensagem. setText(""); break; case ConnectionSocket. ERROR: lbStatus. setText("Ocorreu um erro->" + msg. obj); break; case ConnectionSocket. DISCONNECTED: lbStatus. setText("Servidor->Desconectou"); break; } } }; }; @Override protected void onCreate (Bundle savedInstanceState ) { super. onCreate(savedInstanceState ); setContentView (R. layout. form_msg); lbStatus = (TextView ) findViewById (R. id. lbStatus); edMensagem = (EditText ) findViewById (R. id. edMensagem); btnEnviar = (Button) findViewById (R. id. btnEnviar); btnEnviar. setOnClickListener(this); btnDesconectar = (Button) findViewById (R. id. btnDesconectar); btnDesconectar. setOnClickListener(this); try { // Recupera Conexão atual ConnectionSocket. getCurentConnection(). startSender(handler ); } catch (Exception e ) { Toast . makeText( this, "Não foi possível iniciar o Serviço para envio de Mensagens.", Toast. LENGTH_LONG). show(); finish (); } } @Override public void onClick (View v ) { // clicou no botão desconectar if (v == btnDesconectar ) { try { ConnectionSocket. getCurentConnection(). disconnect(); } catch (Exception e ) { e. printStackTrace(); } // Clicou no botão enviar mensagem } else if (v == btnEnviar ) { ConnectionSocket. getCurentConnection(). senMessage( edMensagem. getText(). toString()); } } Logo no OnCreate da Activity método getCurrentConnection é chamado, ele retorna a conexão atual do Socket. Apos isso, é invocado o método startSender, passando como arguemento uma instância de Sender.java. Aqui trabalhamos com Handler, essa do Android responsável por agendar uma mensagem que poderá modificar o estado de uma tela da nossa aplicação, a classe Handler é muito utilizada vale a pena pesquisar mais um pouco sobre ela. Até aqui tudo bem, agora vamos fazer o nosso Servidor. Que é bem simples. Vamos cirar um projeto Java, chamado de ServidorJava. Não me preocupei em trar excessões, como parar etc. E ele também só recebe uma conexão por fez, ou seja é Single-thread, mas nada impede de altar sua implementação para Multi-thread. Vamos criar a classe Servidor.javaServidor.javapublic class Servidor { private static boolean executando = true; private static String mensagem; private static final int PORTA = 1234; public static void main (String[] args ) { try { ServerSocket server = new ServerSocket(1234); InetAddress addr = InetAddress. getLocalHost(); System. out. println("----------- SERVIDOR CONECTADO " + addr. getHostAddress() + " PORTA " + PORTA + " -----------"); System. out. println("Esperando Conexões."); Socket socket = server. accept(); System. out. println("Sevidor-> Conectou Ip " + socket. getInetAddress(). getHostAddress()); DataInputStream in = new DataInputStream(socket. getInputStream()); try { while (executando ) { mensagem = in. readUTF(); System. out. println("Servidor-> Recebeu Mensagem: " + mensagem ); } System. out. println("Servidor-> Finalizado."); in. close(); socket. close(); server. close(); } catch (Exception e ) { System. err. println("Servidor-> Erro: " + e. getMessage()); executando = false; } } catch (Exception e ) { e. printStackTrace(); } }} Pronto, agora podemos testar nossa aplicação. Primeiro temos que iniciar nosso Servidor Java.  Agora excutando a aplicação irá aparecer.  Por padrão o EditText já traz o ip do Computador local, sendo que 120.0.0.1 é o Ip do Emulator e a porta 1234. Ao clicar no botão Conectar o Android Conectar no Servidor a abre a tela para envio das mensagens.  Quando escrevo uma mensagem, por exemplo "HELLO SOCKET" e clico no botão enviar, o Servidor recebe ela e escreve no console do Eclipse.  Vou deixar aqui também o código fonte para download, o código está devidamento comentado. Socket é de grande utilidade na comunicação remota, pode ser usado não só para envio de Strings, como no exemplo, mas para envio de binários (como arquivos) tanto do Android para um Servidor remoto quanto do Servidor para o Android, ou até mesmo entre dois dispositivos Android. Quem quizer ver mais sobre sockets, em Java, é só pesquisar na Internet existem inúmeros tutoriais. Valeu, até.
|
| 13 Jun 2011, 21:01 |
|
 |
|
Carlos R V Medeiros
What is Android?
Data de registro: 02 Jul 2011, 09:18 Mensagens: 4
|
 Re: [TUTORIAL] Trabalhando com Socket no Android
Olá, desde já agradeço pela generosidade em disponibilizar um tutorial tão interessante como este.
Ao seguir os passos descritos consegui acertar quase todos os códigos para que funcionassem corretamente. Infelizmente não consegui implementar o arquivo ClienteAndroid... ele não reconhece o botão btnConectar
|
| 05 Jul 2011, 11:16 |
|
 |
|
antunes
Dalvik Virtual Machine
Data de registro: 05 Abr 2011, 03:47 Mensagens: 1846 Localização: Rio de Janeiro
|
 Re: [TUTORIAL] Trabalhando com Socket no Android
Carlos R V Medeiros escreveu: Olá, desde já agradeço pela generosidade em disponibilizar um tutorial tão interessante como este.
Ao seguir os passos descritos consegui acertar quase todos os códigos para que funcionassem corretamente. Infelizmente não consegui implementar o arquivo ClienteAndroid... ele não reconhece o botão btnConectar Faz o download do fonte que tem tudo lá!!! Abraços!
_________________Alexandre Antunes @a3b @bemobiMotorola Defy App: IpCalc : Source - Calculadora IP (Máscara, Gateway, Broadcast e Rede). APP: Guia Carioca - Guia para o turista que visita o Rio de Janeiro e para o carioca que quer conhecer mais sua cidade. App: MyPonto - Controle de frequência (ponto) pessoal. Campanha: Facilite sua vida e a dos outros usuários. Objetivo: Vamos colocar a tag [RESOLVIDO] no título do tópico quando o problema for resolvido.Use a ferramenta de busca do fórum e não espere tanto para que a sua dúvida seja respondida!Quer trabalhar comigo??
|
| 06 Jul 2011, 00:13 |
|
 |
|
turim
Application Life Cycle
Data de registro: 31 Mai 2009, 11:37 Mensagens: 259
|
 Re: [TUTORIAL] Trabalhando com Socket no Android
Esse erro aparece na compilaçào ou em tempo de execuçao?
Qual erro é ?
|
| 06 Jul 2011, 11:31 |
|
 |
|
Carlos R V Medeiros
What is Android?
Data de registro: 02 Jul 2011, 09:18 Mensagens: 4
|
 Re: [TUTORIAL] Trabalhando com Socket no Android
O erro aparece no momento de compilar. Quando vou compilar aparece a mensagem: The method onClick(View) of type ClientAndroidActivity must override or implement a supertype method Se eu remover a linha @Override, então aparece outro erro: btnConectar cannot be resolved to a variable
|
| 18 Jul 2011, 10:19 |
|
 |
|
turim
Application Life Cycle
Data de registro: 31 Mai 2009, 11:37 Mensagens: 259
|
 Re: [TUTORIAL] Trabalhando com Socket no Android
Cola aí a classe que está dando erro.
|
| 20 Jul 2011, 09:33 |
|
 |
|
DevAdriano
What is Android?
Data de registro: 04 Fev 2011, 01:41 Mensagens: 9
|
 Re: [TUTORIAL] Trabalhando com Socket no Android
@turim Obrigado por compartilhar seu conhecimento cara, estou só esperando me Galaxy 550 chegar, para que eu possa começar a treinar. Abraço 
|
| 07 Ago 2011, 13:47 |
|
 |
|
mario_droid
What is Android?
Data de registro: 06 Jan 2011, 20:17 Mensagens: 8
|
 Re: [TUTORIAL] Trabalhando com Socket no Android
Otimo tutorial!!! Mas como faria para que o server envia-se uma mensagem para o client android???
|
| 03 Set 2011, 21:51 |
|
 |
|
ricardosma
What is Android?
Data de registro: 09 Set 2011, 09:51 Mensagens: 2
|
 Re: [TUTORIAL] Trabalhando com Socket no Android
Consegui fazer funcionar, mas tenho uma duvida, alguem tem alguma aplicação utilizando socket 100%? ele dá uma travada as vezes. e nao sei se utilizo o json ou socket na minha aplicação. tenho que consultar pelo celular e obter resposta do servidor, ou seja, o servidor tem que enviar e receber dados e o cliente também. o que acham melhor ?
|
| 09 Set 2011, 11:18 |
|
 |
|
antunes
Dalvik Virtual Machine
Data de registro: 05 Abr 2011, 03:47 Mensagens: 1846 Localização: Rio de Janeiro
|
 Re: [TUTORIAL] Trabalhando com Socket no Android
Ricardo,
Não entendo o que o JSON tem a ver com o socket!!!
Eu tenho uma app com 2 sockets e não trava nada!! E a mesma tbm usa um WS com JSON!!
A escolha depende de vc e do que vc está fazendo!!
Eu uso socket em uma parte pq preciso de respostas rápidas, por isso criei o meu protocolo e trabalho com socket.
Para informações não tão críticas, utilizo o WS com JSON, que fica mais fácil de trabalhar.
Abraços!
_________________Alexandre Antunes @a3b @bemobiMotorola Defy App: IpCalc : Source - Calculadora IP (Máscara, Gateway, Broadcast e Rede). APP: Guia Carioca - Guia para o turista que visita o Rio de Janeiro e para o carioca que quer conhecer mais sua cidade. App: MyPonto - Controle de frequência (ponto) pessoal. Campanha: Facilite sua vida e a dos outros usuários. Objetivo: Vamos colocar a tag [RESOLVIDO] no título do tópico quando o problema for resolvido.Use a ferramenta de busca do fórum e não espere tanto para que a sua dúvida seja respondida!Quer trabalhar comigo??
|
| 09 Set 2011, 13:09 |
|
 |
|
turim
Application Life Cycle
Data de registro: 31 Mai 2009, 11:37 Mensagens: 259
|
 Re: [TUTORIAL] Trabalhando com Socket no Android
Olá Ricardo,
Teria que ver onde está "travando" sua aplicação Socket. Lembrando que Socket é um objeto "blocante", ou seja, ele para o processamento no método accept, até que algum cliente conecte nele. Quanto ao utilizar JSON. Que nada mais que um tipo de protocolo geralmente utilizada em requsições Http. Conexão via Socket, você abre um canal e tem uma comunicação bidirecional. Já http: é por requisições e resposta. Você requisita e obtem a resposta... ou não. Você pode usar JSON em sockets, se for para facilitar você transmitir objetos. Dá para usar serialização também, xml... ou até mesmo criar um tipo de protocolo.
Exemplo:
Cliente Socket/Http Servidor objeto<----> JSON<------------>objeto
|
| 09 Set 2011, 14:44 |
|
 |
|
Ferncs
What is Android?
Data de registro: 14 Set 2011, 13:25 Mensagens: 5
|
 Re: [TUTORIAL] Trabalhando com Socket no Android
Mto bom tutorial! Me ajudou mto a entender o funcionamento de comunicacao em ambiente Android. Meu projeto se baseia em comunicacao, porem ao inves de mandar uma mensagem, irei mandar uma figura. Alguem sabe como funciona a transferencia de imagens entre um Android e um Desktop Java usando esse exemplo de socket?
Desde ja Agradeço!
|
| 14 Set 2011, 13:29 |
|
 |
|
antunes
Dalvik Virtual Machine
Data de registro: 05 Abr 2011, 03:47 Mensagens: 1846 Localização: Rio de Janeiro
|
 Re: [TUTORIAL] Trabalhando com Socket no Android
Simples!! Ao invés de enviar uma string, envie um File!!
Eu tenho um exemplo, mas vai ficar muito grande pra postar aqui e se postar só um pedaço vc não vai entender.
Se quiser, manda MP com o seu e-mail que eu te mando.
Abraços!
_________________Alexandre Antunes @a3b @bemobiMotorola Defy App: IpCalc : Source - Calculadora IP (Máscara, Gateway, Broadcast e Rede). APP: Guia Carioca - Guia para o turista que visita o Rio de Janeiro e para o carioca que quer conhecer mais sua cidade. App: MyPonto - Controle de frequência (ponto) pessoal. Campanha: Facilite sua vida e a dos outros usuários. Objetivo: Vamos colocar a tag [RESOLVIDO] no título do tópico quando o problema for resolvido.Use a ferramenta de busca do fórum e não espere tanto para que a sua dúvida seja respondida!Quer trabalhar comigo??
|
| 14 Set 2011, 17:58 |
|
 |
|
baronfa1
What is Android?
Data de registro: 23 Nov 2011, 02:31 Mensagens: 9
|
 Re: [TUTORIAL] Trabalhando com Socket no Android
Muito bom esse tutorial.
Estou estudando Android, e aprendendo muito com vocês aquí no forum.
Fiz esse tutorial, porém ao clicar no Botão Conectar, ele não muda de tela. Rodei o Servidore.java no eclipse , e fica, esperando conexão. Logo em seguida, rodei a aplicação do android. Tentei com : 10.0.2.2 Porta 1234 120.0.0.1 Porta 1234 192.168.1.101 Porta 1234
E nenhuma conecta na tela para enviar a mensagem. O que pode estar errado ?
Outra coisa, se eu quisesse por exemplo salvar essa mensagem em uma tabela em um banco de dados no servidor, como faria ?
Grato,
Fabio Baroni
|
| 26 Nov 2011, 01:13 |
|
 |
|
turim
Application Life Cycle
Data de registro: 31 Mai 2009, 11:37 Mensagens: 259
|
 Re: [TUTORIAL] Trabalhando com Socket no Android
baronfa1
Está aparecendo alguma Exceção ? Se estiver rodando pelo Emulador, o IP pardão já está ni EditText.
Qto a salvar no banco de dados, você teria que criar uma conexão com o SQLite, gerar um insert na tabela, normal.
|
| 26 Nov 2011, 13:26 |
|
 |
|
gilvanealves
What is Android?
Data de registro: 27 Nov 2011, 23:49 Mensagens: 1
|
 Re: [TUTORIAL] Trabalhando com Socket no Android
Olá, achei muito bom esse tutorial, apanhei muito pra entender, pois precisava de varias janelas (e ainda estou apanhando rsrs) mas enfim, já consegui acessos simultaneos, porém o servidor não receonhece q recebeu nova conexão, porém recebe as msgs.. gostaria de saber como eu deixo o servidor sempre ativo, pois ele pára qdo eu desconecto o celular, queria q ele ficasse esperando outra conexão.. como eu faria isso? outra duvida: como eu mando uma msg do servidor pro cliente? já tentei de varias formas mas ainda não deu certo.. agradeço desde já a atenção.. abçs
|
| 27 Nov 2011, 23:51 |
|
 |
|
turim
Application Life Cycle
Data de registro: 31 Mai 2009, 11:37 Mensagens: 259
|
 Re: [TUTORIAL] Trabalhando com Socket no Android
Para deixar ele ativo deve-se alterar o while do Servidor. while (executando ) { mensagem = in. readUTF(); System. out. println("Servidor-> Recebeu Mensagem: " + mensagem ); } System. out. println("Servidor-> Finalizado."); in. close(); socket. close(); server. close(); //Aqui está fechando o Socket do Servidor Teria que fazer algo como: while (true) { mensagem = in. readUTF(); System. out. println("Servidor-> Recebeu Mensagem: " + mensagem ); } System. out. println("Servidor-> Finalizado."); in. close(); socket. close(); Já para enviar um dados do dispositivo para o Servidor, teria que acrescentar: DataOutputStream out = new DataOutputStream(socket. getOutputStream()); //Cria Fluxo para enviar dados try { while (executando ) { mensagem = in. readUTF(); System. out. println("Servidor-> Recebeu Mensagem: " + mensagem ); } System. out. println("Servidor-> Finalizado."); out. write("OK". getBytes()); //Envia OK para servidor out. flush(); //Flush no Fluxo de bytes out. close(); //Close in. close(); socket. close(); // server.close(); } catch (Exception e ) { System. err. println("Servidor-> Erro: " + e. getMessage()); executando = false; } Lembrando que o servidor é single-thread, ou seja, só conecta um cliente de cada vez. Espero que ajude.
|
| 28 Nov 2011, 13:32 |
|
 |
|
casevictor
What is Android?
Data de registro: 12 Jan 2012, 04:25 Mensagens: 1
|
 Re: [TUTORIAL] Trabalhando com Socket no Android
Parabéns pelo tutorial! Criei uma conta neste portal por sua causa heheheh Continue assim.. espero estar compartilhando informações quando ganhar experiencia  Obrigado ^^
|
| 12 Jan 2012, 04:27 |
|
 |
|
victormsp
What is Android?
Data de registro: 05 Dez 2011, 20:28 Mensagens: 3
|
 Re: [TUTORIAL] Trabalhando com Socket no Android
Gostei muito do tutorial! Me ajudou a entender bastante como funciona socket em Android.
Mas eu gostaria de saber como eu poderia deixar Multi-thread e também implementar que o servidor envie mensagem ao cliente... Andei pesquisando, mas não encontrei algo que me ajudasse! Sou novo...
|
| 23 Jan 2012, 18:25 |
|
 |
|
turim
Application Life Cycle
Data de registro: 31 Mai 2009, 11:37 Mensagens: 259
|
 Re: [TUTORIAL] Trabalhando com Socket no Android
Olá Victor, recebi seu e-mail, e lhe respondi ok. Depois coloco aqui no tópico, para compartilhar com todos.
|
| 24 Jan 2012, 08:52 |
|
 |
|
ellismar
What is Android?
Data de registro: 16 Dez 2011, 15:05 Mensagens: 7
|
 Re: [TUTORIAL] Trabalhando com Socket no Android
Boa tarde galera!
Escrevi este código e está rodando 100%.
Agora a questão é, tem como usar essa mesmo algorítimo ou ideia para baixar dados do servidor e jogar dentro de uma pasta no android.
Vlw.
|
| 02 Fev 2012, 11:58 |
|
 |
|
turim
Application Life Cycle
Data de registro: 31 Mai 2009, 11:37 Mensagens: 259
|
 Re: [TUTORIAL] Trabalhando com Socket no Android
Quando você quer dizer com dados ? Arquivos ?
|
| 02 Fev 2012, 14:55 |
|
 |
|
ellismar
What is Android?
Data de registro: 16 Dez 2011, 15:05 Mensagens: 7
|
 Re: [TUTORIAL] Trabalhando com Socket no Android
Sim, qualquer tipo de arquivo que estiver no servidor. Fazer download dele e joga em uma pasta no dispositivo móvel.
|
| 03 Fev 2012, 08:06 |
|
 |
|
turim
Application Life Cycle
Data de registro: 31 Mai 2009, 11:37 Mensagens: 259
|
 Re: [TUTORIAL] Trabalhando com Socket no Android
Então, é o sentido inverso do Tutorial. É possível fazer sim.
No caso, o servidor envia uma String como resposta ao Android.
Para enviar um arquivo, basta passar um byte[].
E no dispositvo converter esse byte em um arquivo.
|
| 03 Fev 2012, 09:41 |
|
 |
|
Luciano0102
What is Android?
Data de registro: 06 Mar 2012, 17:33 Mensagens: 2
|
 Re: [TUTORIAL] Trabalhando com Socket no Android
Ola turim, usando seu tutorial construi um poc fazendo acesso ao banco de dados e funciona perfeitamente, gostaria de saber se há alguma maneira de detectar uma falha, tipo envio um insert para o servidor fazer no banco, o servidor faz o insert mas não recebo a confirmação do insert? Desde já agraço a atenção.
|
| 06 Mar 2012, 18:22 |
|
 |
|
turim
Application Life Cycle
Data de registro: 31 Mai 2009, 11:37 Mensagens: 259
|
 Re: [TUTORIAL] Trabalhando com Socket no Android
Luciano0102 escreveu: Ola turim, usando seu tutorial construi um poc fazendo acesso ao banco de dados e funciona perfeitamente, gostaria de saber se há alguma maneira de detectar uma falha, tipo envio um insert para o servidor fazer no banco, o servidor faz o insert mas não recebo a confirmação do insert? Desde já agraço a atenção. Luciano0102, Isso já vai do negócio que você esta usando. A classe Socket mesmo nào trata isso. O que você pode fazer é definir um protocolo, se conseguir fazer o insert, devolve um "OK", caso contrário, devolve o erro. Seria uma opção.
|
| 07 Mar 2012, 09:20 |
|
 |
|
Luciano0102
What is Android?
Data de registro: 06 Mar 2012, 17:33 Mensagens: 2
|
 Re: [TUTORIAL] Trabalhando com Socket no Android
O problema é exatamtente esse: não receber a confirmação e nem o erro Estou fazendo assim a requisição do insert ao servidor: socket = new Socket(SERVIDOR_IP, SERVIDOR_PORTA); out = new DataOutputStream(socket.getOutputStream()); in = new DataInputStream(socket.getInputStream()); out.writeUTF("INSERT"); out.writeUTF("PARAMETRO"); out.flush();
String res = in.readUTF().toString().trim(); //AQUI ESTÁ O PROBLEMA NEM SEMPRE RECEBO A CONFIRMAÇÃO MESMO ELA TENDO SIDO EFETIVADA COM SUCESSO
Para um sistema em produção isso seria drástico. Agradeço mais uma vez pela atenção.
|
| 08 Mar 2012, 11:46 |
|
 |
|
turim
Application Life Cycle
Data de registro: 31 Mai 2009, 11:37 Mensagens: 259
|
 Re: [TUTORIAL] Trabalhando com Socket no Android
Nesse tutorial não foi implementado a parte do Servido renviar uma menasgem ao Cliente. Isso foi abordado em outro tutorial, Trabalhando com Socket no Android II - Arquivo. Espero que ajude.
|
| 08 Mar 2012, 12:32 |
|
 |
|
UesleiEngineer
What is Android?
Data de registro: 10 Mar 2012, 03:01 Mensagens: 3
|
 Re: [TUTORIAL] Trabalhando com Socket no Android
Olá! Primeiramente obrigado por feito esse tutorial, ajudando todos na comunidade. Estou começando a estudar socket agora, então ainda
é um pouco confuso pra mim. Então, estou trabalhando com um módulo arduino ethernet shild, ele cria um servidor e abre uma porta na rede local. Eu gostaria de enviar e receber informações através do android para ele. Para isso eu preciso criar um cliente e servidor no android? Ou eu posso enviar e receber informações pela rede sendo, apenas cliente?
Até mais!!Desde jah agradeço cara!!
|
| 13 Mar 2012, 02:25 |
|
 |
|
turim
Application Life Cycle
Data de registro: 31 Mai 2009, 11:37 Mensagens: 259
|
 Re: [TUTORIAL] Trabalhando com Socket no Android
Não necessariamente. Socket é um meio de comunicação biderecional, você envia e receber informações, sendo cliente ou servidor. No tutorial [TUTORIAL] Trabalhando com Socket no Android II - Arquivo, tem uma parte onde o servidor envia um "OK", para o cliente. valeu.
|
| 13 Mar 2012, 09:09 |
|
 |
|
UesleiEngineer
What is Android?
Data de registro: 10 Mar 2012, 03:01 Mensagens: 3
|
 Re: [TUTORIAL] Trabalhando com Socket no Android
Obrigado pela resposta Turim! Este tutorial tem me ajudado muito. Estou estudando cada classe do código, só que ainda não encontrei o método que recebe o dado do servidor. Também abri o seu projeto no eclipse e deu um erro no método OnClick(), o eclipse sugere que eu utilize o OnClickListener() .... Até mais Turim! Novamente brigado!!
|
| 13 Mar 2012, 21:16 |
|
 |
|
turim
Application Life Cycle
Data de registro: 31 Mai 2009, 11:37 Mensagens: 259
|
 Re: [TUTORIAL] Trabalhando com Socket no Android
UesleiEngineer escreveu: Obrigado pela resposta Turim! Este tutorial tem me ajudado muito. Estou estudando cada classe do código, só que ainda não encontrei o método que recebe o dado do servidor. Também abri o seu projeto no eclipse e deu um erro no método OnClick(), o eclipse sugere que eu utilize o OnClickListener() .... Até mais Turim! Novamente brigado!! Eu me enganei, o servidor não "responde" nada. Para funciona o envio de Mesnagem do Servidor para o Cliente deve-se incluir o seguinte código no Servidor.java. (... )DataOutputStream out = new DataOutputStream(socket. getOutputStream()); out. write("OK". getBytes()); //Aqui envia a mensagem ao clienteout. flush(); out. close(); (... ) No Cliente você pode criar uma classe responsável de recebimento das mensagens, por exemplo: Receiver.java. Seria mais ou menos assim: class Receiver implements Runnable { private DataInputStream in; (... ) public Sender (DataInputStream in, Handler handler ) { this. out = out; this. handler = handler; }(... )@Override public void run () {//Dentro do Loop da Threadin. readUTF()(... )} Espero que ajude. Até mais.
|
| 13 Mar 2012, 23:30 |
|
 |
|
Goncalves1
Anatomy of an App
Data de registro: 29 Mar 2012, 10:00 Mensagens: 174
|
 Re: [TUTORIAL] Trabalhando com Socket no Android
turim gostaria de saber como eu poderia deixar Multi-thread e também implementar que o servidor envie mensagem ao cliente poderia me ajuda ?
|
| 11 Abr 2012, 12:39 |
|
 |
|
Goncalves1
Anatomy of an App
Data de registro: 29 Mar 2012, 10:00 Mensagens: 174
|
 Re: [TUTORIAL] Trabalhando com Socket no Android
antunes escreveu: Simples!! Ao invés de enviar uma string, envie um File!!
Eu tenho um exemplo, mas vai ficar muito grande pra postar aqui e se postar só um pedaço vc não vai entender.
Se quiser, manda MP com o seu e-mail que eu te mando.
Abraços! Não sei se estou mandando pela segunda veiz é que ocorreu erro na pagina então você teria algum exemplo nesse estilo : eu crio um arquivo txt dentro do programa e adiciono uma informção "string" dentro dele e envio o arquivo txt para o servidor. será que poderia me ajudar? meu email é : goncalves.essystem@hotmail.com
|
| 19 Abr 2012, 11:28 |
|
 |
|
antunes
Dalvik Virtual Machine
Data de registro: 05 Abr 2011, 03:47 Mensagens: 1846 Localização: Rio de Janeiro
|
 Re: [TUTORIAL] Trabalhando com Socket no Android
Goncalves1 escreveu: antunes escreveu: Simples!! Ao invés de enviar uma string, envie um File!!
Eu tenho um exemplo, mas vai ficar muito grande pra postar aqui e se postar só um pedaço vc não vai entender.
Se quiser, manda MP com o seu e-mail que eu te mando.
Abraços! Não sei se estou mandando pela segunda veiz é que ocorreu erro na pagina então você teria algum exemplo nesse estilo : eu crio um arquivo txt dentro do programa e adiciono uma informção "string" dentro dele e envio o arquivo txt para o servidor. será que poderia me ajudar? meu email é : goncalves.essystem@hotmail.comRapaz, O turim já fez um tutorial de envio de arquivo com socket: viewtopic.php?f=7&t=13446Com um pesquisa rápida no google achei esses links para socket com arquivo e escrita em txt: http://www.rgagnon.com/javadetails/java-0542.htmlhttp://www.roseindia.net/java/beginners ... file.shtmlA diferença é que o meu servidor é multi-thread, ou seja, a cada conexão de um cliente, uma thread é aberta e a comunicação é tratada independentemente, assim vc consegue que vários clientes se conectem no seu servidor, mas basicamente pra fazer o que vc precisa, é isso que estão nesses links! O meu código não escreve no arquivo e eu nem sei onde está, vou ter que procurar! Foi algo que fiz para a faculdade! Qualquer dúvida abra um tópico para tratar esse assunto! Abraços!
_________________Alexandre Antunes @a3b @bemobiMotorola Defy App: IpCalc : Source - Calculadora IP (Máscara, Gateway, Broadcast e Rede). APP: Guia Carioca - Guia para o turista que visita o Rio de Janeiro e para o carioca que quer conhecer mais sua cidade. App: MyPonto - Controle de frequência (ponto) pessoal. Campanha: Facilite sua vida e a dos outros usuários. Objetivo: Vamos colocar a tag [RESOLVIDO] no título do tópico quando o problema for resolvido.Use a ferramenta de busca do fórum e não espere tanto para que a sua dúvida seja respondida!Quer trabalhar comigo??
|
| 19 Abr 2012, 12:57 |
|
 |
|
malinosqui
What is DDMS?
Data de registro: 23 Abr 2012, 00:23 Mensagens: 35
|
 Re: [TUTORIAL] Trabalhando com Socket no Android
Quando clico em conectar da "Não foi possivel conectar ->Permission denied". E a minha aplicação servidor ta rodando certinho !
|
| 23 Abr 2012, 01:52 |
|
 |
|
antunes
Dalvik Virtual Machine
Data de registro: 05 Abr 2011, 03:47 Mensagens: 1846 Localização: Rio de Janeiro
|
 Re: [TUTORIAL] Trabalhando com Socket no Android
Vc colocou as permissões no manifest??
_________________Alexandre Antunes @a3b @bemobiMotorola Defy App: IpCalc : Source - Calculadora IP (Máscara, Gateway, Broadcast e Rede). APP: Guia Carioca - Guia para o turista que visita o Rio de Janeiro e para o carioca que quer conhecer mais sua cidade. App: MyPonto - Controle de frequência (ponto) pessoal. Campanha: Facilite sua vida e a dos outros usuários. Objetivo: Vamos colocar a tag [RESOLVIDO] no título do tópico quando o problema for resolvido.Use a ferramenta de busca do fórum e não espere tanto para que a sua dúvida seja respondida!Quer trabalhar comigo??
|
| 23 Abr 2012, 03:15 |
|
 |
|
malinosqui
What is DDMS?
Data de registro: 23 Abr 2012, 00:23 Mensagens: 35
|
 Re: [TUTORIAL] Trabalhando com Socket no Android
Acho que sim! Veja se esta certo =D <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="pacote.grafico" android:versionCode="1" android:versionName="1.0" >
<uses-sdk android:minSdkVersion="8" />
<application android:icon="@drawable/ic_launcher" android:label="@string/app_name" > <activity android:name=".AndroidClienteActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <uses-permission android:name="android.permission.INTERNET"></uses-permission> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission> </application>
</manifest>
|
| 23 Abr 2012, 14:25 |
|
 |
|
Goncalves1
Anatomy of an App
Data de registro: 29 Mar 2012, 10:00 Mensagens: 174
|
 Re: [TUTORIAL] Trabalhando com Socket no Android
Olá antunes, eu vi os tutoriais do Turim mais não sei como implementar oque eu desejo, sou novato na area não sei muito sobre socket queria uma ajuda, abri um topico http://www.portalandroid.org/comunidade/viewtopic.php?f=2&t=19051&p=136919#p136919se puder me ajudar, e também tenho que deixar meu servidor multi-thread, se poder me ajudar com algum exemplo Agradeço a ajuda !
|
| 23 Abr 2012, 14:27 |
|
 |
|
antunes
Dalvik Virtual Machine
Data de registro: 05 Abr 2011, 03:47 Mensagens: 1846 Localização: Rio de Janeiro
|
 Re: [TUTORIAL] Trabalhando com Socket no Android
malinosqui escreveu: Acho que sim! Veja se esta certo =D <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="pacote.grafico" android:versionCode="1" android:versionName="1.0" >
<uses-sdk android:minSdkVersion="8" />
<application android:icon="@drawable/ic_launcher" android:label="@string/app_name" > <activity android:name=".AndroidClienteActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <uses-permission android:name="android.permission.INTERNET"></uses-permission> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission> </application>
</manifest> As permissões devem ficar fora da tag "application" e de preferência antes dela!! Assim: <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="pacote.grafico" android:versionCode="1" android:versionName="1.0" >
<uses-sdk android:minSdkVersion="8" />
<uses-permission android:name="android.permission.INTERNET"></uses-permission> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>
<application android:icon="@drawable/ic_launcher" android:label="@string/app_name" > <activity android:name=".AndroidClienteActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application>
</manifest>
Sugiro que vc dê uma lida sobre manifest na documentação oficial!! http://developer.android.com/guide/topi ... intro.htmlAbraços!
_________________Alexandre Antunes @a3b @bemobiMotorola Defy App: IpCalc : Source - Calculadora IP (Máscara, Gateway, Broadcast e Rede). APP: Guia Carioca - Guia para o turista que visita o Rio de Janeiro e para o carioca que quer conhecer mais sua cidade. App: MyPonto - Controle de frequência (ponto) pessoal. Campanha: Facilite sua vida e a dos outros usuários. Objetivo: Vamos colocar a tag [RESOLVIDO] no título do tópico quando o problema for resolvido.Use a ferramenta de busca do fórum e não espere tanto para que a sua dúvida seja respondida!Quer trabalhar comigo??
|
| 23 Abr 2012, 22:30 |
|
 |
|
malinosqui
What is DDMS?
Data de registro: 23 Abr 2012, 00:23 Mensagens: 35
|
 Re: [TUTORIAL] Trabalhando com Socket no Android
@antunes A sim , obrigado pela ajuda ! Eu li um pouquinho sobre manifest agora. Aquele erro foi corrigido porem esta dando outro erro,agora aparece !"Não foi possivel iniciar o serviço de envio de mensagens!" só que no log da aplicação servidor aparece "Conectou ip 127.0.0.1". Se voce puder me ajudar ,estarei grato pois sou iniciante em android , e meu TCC é sobre isso ! =D Abraços
|
| 24 Abr 2012, 15:57 |
|
 |
|
antunes
Dalvik Virtual Machine
Data de registro: 05 Abr 2011, 03:47 Mensagens: 1846 Localização: Rio de Janeiro
|
 Re: [TUTORIAL] Trabalhando com Socket no Android
Coloque o comando "e.printStackTrace();" no catch dessa parte do código e veja o erro que vai aparecer no logcat!!
Abraços!
_________________Alexandre Antunes @a3b @bemobiMotorola Defy App: IpCalc : Source - Calculadora IP (Máscara, Gateway, Broadcast e Rede). APP: Guia Carioca - Guia para o turista que visita o Rio de Janeiro e para o carioca que quer conhecer mais sua cidade. App: MyPonto - Controle de frequência (ponto) pessoal. Campanha: Facilite sua vida e a dos outros usuários. Objetivo: Vamos colocar a tag [RESOLVIDO] no título do tópico quando o problema for resolvido.Use a ferramenta de busca do fórum e não espere tanto para que a sua dúvida seja respondida!Quer trabalhar comigo??
|
| 24 Abr 2012, 17:15 |
|
 |
|
malinosqui
What is DDMS?
Data de registro: 23 Abr 2012, 00:23 Mensagens: 35
|
 Re: [TUTORIAL] Trabalhando com Socket no Android
Amigo o meu logcat não esta apresentando erro algum , e eu coloquei o método que voce mandou aqui : try { // Recupera Conexão atual ConnectionSocket. getCurentConnection(). startSender(handler ); } catch (Exception e ) { Toast . makeText( this, "Não foi possível iniciar o Serviço para envio de Mensagens.", Toast. LENGTH_LONG). show(); e. printStackTrace(); finish (); } } Desculpa o incomodo cara!
|
| 24 Abr 2012, 17:52 |
|
 |
|
antunes
Dalvik Virtual Machine
Data de registro: 05 Abr 2011, 03:47 Mensagens: 1846 Localização: Rio de Janeiro
|
 Re: [TUTORIAL] Trabalhando com Socket no Android
Coloca entes do toast!!
Se cai no catch, tem que aparecer no logcat!
Abraços!
_________________Alexandre Antunes @a3b @bemobiMotorola Defy App: IpCalc : Source - Calculadora IP (Máscara, Gateway, Broadcast e Rede). APP: Guia Carioca - Guia para o turista que visita o Rio de Janeiro e para o carioca que quer conhecer mais sua cidade. App: MyPonto - Controle de frequência (ponto) pessoal. Campanha: Facilite sua vida e a dos outros usuários. Objetivo: Vamos colocar a tag [RESOLVIDO] no título do tópico quando o problema for resolvido.Use a ferramenta de busca do fórum e não espere tanto para que a sua dúvida seja respondida!Quer trabalhar comigo??
|
| 24 Abr 2012, 19:25 |
|
 |
|
malinosqui
What is DDMS?
Data de registro: 23 Abr 2012, 00:23 Mensagens: 35
|
 Re: [TUTORIAL] Trabalhando com Socket no Android
Coloquei em cima do Toast , Ai o que esta aparecendo no meu logcat em amarelo : 04-25 01:08:15.676: W/System.err(282): at android.app.ActivityThread.access$2300(ActivityThread.java:125) 04-25 01:08:15.676: W/System.err(282): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033) 04-25 01:08:15.676: W/System.err(282): at android.os.Handler.dispatchMessage(Handler.java:99) 04-25 01:08:15.690: W/System.err(282): at android.os.Looper.loop(Looper.java:123) 04-25 01:08:15.690: W/System.err(282): at android.app.ActivityThread.main(ActivityThread.java:4627) 04-25 01:08:15.696: W/System.err(282): at java.lang.reflect.Method.invokeNative(Native Method) 04-25 01:08:15.696: W/System.err(282): at java.lang.reflect.Method.invoke(Method.java:521) 04-25 01:08:15.696: W/System.err(282): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 04-25 01:08:15.696: W/System.err(282): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 04-25 01:08:15.710: W/System.err(282): at dalvik.system.NativeStart.main(Native Method) 04-25 01:08:15.726: W/System.err(282): java.lang.ClassCastException: pacote.grafico.Sender 04-25 01:08:15.726: W/System.err(282): at pacote.grafico.ConnectionSocket.startSender(ConnectionSocket.java:51) 04-25 01:08:15.726: W/System.err(282): at pacote.grafico.MensagemAndroid.onCreate(MensagemAndroid.java:60) 04-25 01:08:15.726: W/System.err(282): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 04-25 01:08:15.726: W/System.err(282): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627) 04-25 01:08:15.726: W/System.err(282): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679) 04-25 01:08:15.726: W/System.err(282): at android.app.ActivityThread.access$2300(ActivityThread.java:125) 04-25 01:08:15.726: W/System.err(282): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033) 04-25 01:08:15.739: W/System.err(282): at android.os.Handler.dispatchMessage(Handler.java:99) 04-25 01:08:15.739: W/System.err(282): at android.os.Looper.loop(Looper.java:123) 04-25 01:08:15.739: W/System.err(282): at android.app.ActivityThread.main(ActivityThread.java:4627) 04-25 01:08:15.746: W/System.err(282): at java.lang.reflect.Method.invokeNative(Native Method) 04-25 01:08:15.746: W/System.err(282): at java.lang.reflect.Method.invoke(Method.java:521) 04-25 01:08:15.757: W/System.err(282): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 04-25 01:08:15.757: W/System.err(282): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 04-25 01:08:15.766: W/System.err(282): at dalvik.system.NativeStart.main(Native Method) 04-25 01:08:15.946: W/InputManagerService(59): Window already focused, ignoring focus gain of: com.android.internal.view.IInputMethodClient$Stub$Proxy@44ef6458
|
| 24 Abr 2012, 23:12 |
|
 |
|
antunes
Dalvik Virtual Machine
Data de registro: 05 Abr 2011, 03:47 Mensagens: 1846 Localização: Rio de Janeiro
|
 Re: [TUTORIAL] Trabalhando com Socket no Android
Tá aí, problema de "ClassCastException" na linha 51 da classe "ConnectionSocket"!!
04-25 01:08:15.726: W/System.err(282): at pacote.grafico.ConnectionSocket.startSender(ConnectionSocket.java:51)
Abraços!
_________________Alexandre Antunes @a3b @bemobiMotorola Defy App: IpCalc : Source - Calculadora IP (Máscara, Gateway, Broadcast e Rede). APP: Guia Carioca - Guia para o turista que visita o Rio de Janeiro e para o carioca que quer conhecer mais sua cidade. App: MyPonto - Controle de frequência (ponto) pessoal. Campanha: Facilite sua vida e a dos outros usuários. Objetivo: Vamos colocar a tag [RESOLVIDO] no título do tópico quando o problema for resolvido.Use a ferramenta de busca do fórum e não espere tanto para que a sua dúvida seja respondida!Quer trabalhar comigo??
|
| 24 Abr 2012, 23:23 |
|
 |
|
malinosqui
What is DDMS?
Data de registro: 23 Abr 2012, 00:23 Mensagens: 35
|
 Re: [TUTORIAL] Trabalhando com Socket no Android
O meu método esta assim : public void startSender (Handler handler ) { sender = new Sender (out, handler ); new Thread((Runnable) sender ). start(); this. handler = handler; } Sendo que o do código fonte esta assim : public void startSender (Handler handler ) { sender = new Sender (out, handler ); new Thread(sender ). start(); this. handler = handler; } Se eu deixar como esta no código fonte da erro , pede para eu fazer um casting para Runnable como fiz , remover o argumento sender de dentro do Thread , trocar a variavel para o tipo sender , ou "Let sender implement Runnable". EDIT: Passou para a próxima tela , só que o botão não esta enviando a mensagem ! Muito obrigado pela ajuda ! Abraços
|
| 24 Abr 2012, 23:36 |
|
 |
|
antunes
Dalvik Virtual Machine
Data de registro: 05 Abr 2011, 03:47 Mensagens: 1846 Localização: Rio de Janeiro
|
 Re: [TUTORIAL] Trabalhando com Socket no Android
Vc teve que fazer o cast pq o sua classe Sender não deve ser um Runnable!! Vc não deve ter feito isso nela: De inicio, tente fazer exatamente como no tutorial, depois mude como quiser, tendo certeza do que está fazendo!! Abraços!
_________________Alexandre Antunes @a3b @bemobiMotorola Defy App: IpCalc : Source - Calculadora IP (Máscara, Gateway, Broadcast e Rede). APP: Guia Carioca - Guia para o turista que visita o Rio de Janeiro e para o carioca que quer conhecer mais sua cidade. App: MyPonto - Controle de frequência (ponto) pessoal. Campanha: Facilite sua vida e a dos outros usuários. Objetivo: Vamos colocar a tag [RESOLVIDO] no título do tópico quando o problema for resolvido.Use a ferramenta de busca do fórum e não espere tanto para que a sua dúvida seja respondida!Quer trabalhar comigo??
|
| 25 Abr 2012, 01:50 |
|
 |
|
malinosqui
What is DDMS?
Data de registro: 23 Abr 2012, 00:23 Mensagens: 35
|
 Re: [TUTORIAL] Trabalhando com Socket no Android
Agora deu certo ! Ta funcionando certinho , obrigado pela ajuda =D . Só mais uma pergunta , eu passei o app pro meu celular , e queria saber como faço para conectar sem ser com o emulador ,tem que fazer algo a mais? O ip e a porta mudam? Porque esta dando erro e pedindo pra fechar o aplicativo no celular =X , obrigado Abraços
|
| 26 Abr 2012, 00:27 |
|
 |
|
antunes
Dalvik Virtual Machine
Data de registro: 05 Abr 2011, 03:47 Mensagens: 1846 Localização: Rio de Janeiro
|
 Re: [TUTORIAL] Trabalhando com Socket no Android
Muda sim, agora vc tem que colocar o ip do seu PC!!
Abraços!
_________________Alexandre Antunes @a3b @bemobiMotorola Defy App: IpCalc : Source - Calculadora IP (Máscara, Gateway, Broadcast e Rede). APP: Guia Carioca - Guia para o turista que visita o Rio de Janeiro e para o carioca que quer conhecer mais sua cidade. App: MyPonto - Controle de frequência (ponto) pessoal. Campanha: Facilite sua vida e a dos outros usuários. Objetivo: Vamos colocar a tag [RESOLVIDO] no título do tópico quando o problema for resolvido.Use a ferramenta de busca do fórum e não espere tanto para que a sua dúvida seja respondida!Quer trabalhar comigo??
|
| 26 Abr 2012, 00:56 |
|
|
Quem está online |
Usuários vendo este fórum: AdrianoMM, albinoneto, alexandrefett, alexsander.miranda, Anakin Skywalker, andepunk, Anderson.OL, arquivo51, Biel, BiG_SerGiO, blaster, bocajunior88, bozzano, breko, Bruno, Brunohc, BrunoO, Bruto_JPO, C-3PO, caciara, Cajux, canaville, Carlos Almeida, cavenaghi, cehills, Celso Jr., claudioalfonso, cleber, cleiton_maciel, compto, czambroni, dariosena, David, dbuarque, Demerval, Diego Otani, dnakamashi, Dudi_FC, edson dias de gusmao, Eduardo - Brasil, eduardo.ali, edwarvelarde, Erik Patekoski, espinhara.net, estratec, felipetesc, ffardo, frederico.affini, freina, germanno, Gui Pereira, guilhermesmo, guitarro17, guto.pro, HanNiBaLSeTDf, henrique.garcia, icarodavi, Ielo8, JairoCN, jeanbr07, julianafsa, juliancesar, juliaojunior, juniorsk8, Katia, kecyobarros, lafamac, laucode, lazarodm, Lindberg, Liviosousa, lucastgomes, luciano.sml, luciocamilo, luiz, luiz.lago, madeinnordeste, Marcelo, marcelosv, MARCIOHG, Marco Magoo, marcosf63, marcosrogel, maurofjr, maurosilva, memnoch, Michel, mmfsndroid, MSN NewsBlogs, Mvitor, mvoto, neimarguerra, Newton Barbosa, Nice, Nidio Dolfini, niloleite, nilsgome, nina.rm, nishimura.ichigo, nivaldo, nsansilva, Nute Gunray, otium, Paulo, pemam.com.br, peterson.bah, phfmendes, pomarolli, rafaelvital, ramonrabello, ramonsiebra, rcotonet, rdchaves, rerp7, rfrafael, rmendes, robsonoracle, rodrigoinnova, rogerio, rogerio.alcantara, Rogério, ronamore, rubens_olv, sandro, sasuke_sarutobi, shazaum, Synoo [Bot], Teodoro, thanaptos, Thelemita, thiaguim, tiago, tiagocomerio, tiagocordeiro, Tognoli, Toks, tonylock, tricx16, ttaranto, viniciusllima, viniciusluiz, weber, Webnet, wender, wylken, yuri82, zorieuq e 4 visitantes |
|
Você não pode criar novos tópicos neste fórum Você não pode responder tópicos neste fórum Você não pode editar suas mensagens neste fórum Você não pode excluir suas mensagens neste fórum Você não pode enviar anexos neste fórum
|
|