Androideity

Programación android en español, tutoriales, documentación, noticias, smartphones, tablets, programación android, aplicaciones android

Sockets en Android

| | 166 Comentarios

imagenposts   Hola lectores el dia de hoy veremos como utilizar sockets en Android, como crearlos, enviar y recibir datos. Antes de empezar es necesario saber lo que es un socket pueden leer el sig. articulo. Básicamente lo que haremos hoy es una aplicacion ‘cliente’  para android que se conectara mediante un socket usando el protocolo TCP a una aplicaciòn ‘servidor’ escrita en JAVA J2SE, esta app nos permitira enviar datos al servidor y desde este le podremos dar un uso a estos. A continuación podrán ver como es el diagrama en una Comunicacion entre un cliente y un servidor.   Como veran primero se establece la coneccion, luego  el servidor  espera a que los clientes se conecten, una vez ya conectados uno hace una peticion y obtiene una respuesta hasta hacen esto hasta que la coneccion se corta. Nosotros trataremos de hacer lo mismo. En nuestro caso la app cliente estara en un dispositivo con android que se conectara mediante Wi-Fi a un router en el cual tambien esta conectada la  computadora que correra la aplicacion servidor al estar hecho en java podra correr en cualquier sistema operativo.   En android el manejo de sockets por lo menos con  TCP es igual que en java, aclaro que no soy un experto en este tema  me he basado en vario tutoriales que encontraran al final. Cuando trabajamos con sockets podemos usar el tipo  Socket en el cliente y en el servidor uno o más objetos Socket asociados a un ServerSocket. La E/S se realiza a través de objetos InputStream y OutputStream asociados a los Sockets. Lado  Servidor:En el servidor debemos hacer lo sig.

  • Crear el socket servidor
  • Aceptar un cliente
  • Obtener los InputStream y/o OutputStream del cliente.
  • Crear unos InputStream y/o OutputStream más adecuados a nuestras necesidades.
  • Leer y escribir datos del y al cliente.
  • Cerrar el socket.

En el servidor se crea un serversocket que tiene como parametro el numero de puerto este puede ser del 1 a 65535  del 1 a 1023 están reservados para servicios del sistema (SSH,SMTP, ftp, mail, www, telnet, etc…) Del 1024 en adelante podemos usarlos a nuestro gusto. Crear el socket servidor: El servidor crea un socket servidor que tiene como parámetro el puerto en el que a va estar escuchando las peticiones entrantes en mi caso he usado el 5555: ServerSocket skServidor = new ServerSocket(5555); Cada servidor debe usar un puerto diferente. Aceptar un cliente: Una vez creado el servidor, este espera conexiones de los cliente para eso llamamos al método accept(). Este método se queda bloqueado hasta que algún cliente se conecta. Nos devuelve un Socket, que es la conexión con dicho cliente. Socket skCliente = skServidor.accept();Un servidor puede manejar multiples conexion con cliente pero en este caso solamente manejara una.

Obtener el InputStream y/o OutputStream

Una vez que el cliente ya esta conectado, debemos  obtener de él el OuputStream o InputStream con los métodosgetOutputStream() o getInputStream(). La clase OutpuStream nos sirve para enviar datos.  InputStream nos sirve para leer los datos recibidos. InputStream input = skCliente.getIntputStream(); OutputStream output = skCliente.getOutputStream(); Estos metodos únicamente envían bytes. Si vamos a utilizar tipos de datos normales (enteros, String) podemos utilizar las clases DataInputStream y DataOutputStream. Estas clases tienen un constructor que admite unInputStream y un OutputStream respectivamente. DataInputStream inputdata = new DataInputStream (input); DataOuputStream outputdata = new DataOutputStream (output); Estas clases tienen sus propios metodos para escribir o leer. como writeInt(),writeFloat()readInt(), etc. Para strings usaremos los métodos writeUTF() y readUTF(), que envían/leen las cadenas en formato UTF.

Tambien podemos enviar y recibir objetos, en nuestra aplicacion crearemos nuestro objeto Mensaje_data
Para poder leer o escribir deberemos usar los metodos  readObject() y writeObject() de ObjectInputStream y ObjectOutputStream.
Para poder usar estos métodos las clases que enviemos deben implementar la interface Serializable.

Lado Cliente: Para poder crear el socket usamos la clase ‘Socket’ ademas deberemos usar la Direccion IP del server y el puerto que empleara para la comunicacion Socket skCliente = new Socket (IP,PUERTO); IP debe ser u String y PUERTO un entero. Podemos ver todo esto en el sig. diagrama.

 Veremos mas de esto en el codigo de la aplicacion.
De momento nuestra app solamente enviara mensajes al servidor osea que la comunicacion sera en un solo sentido veremos como hacerla
‘bidireccional en otro turial’
Una vez ya visto la parte teorica manos a la obra.
La app de android se vera asi le di un diseño parecido al tablero de una maquinaria para que sea mas agradable y divertido.
Captura de la app

Tendrá unos campos al comienzo en donde deberemos ingresar la direccion ip del server y el puerto,unos leds que cambiaran de color segun el estado de la conexion y un texto en el medio que informara cuando halla un error, luego mas abajo hay un campo en el que le podemos enviar un texto al servidor y luego de bajo cuatro botones de acción a los cuales desde el servidor podremos asignarle que cada vez que se los pulse realizar en el server una accion diferente como ejecutar un script, abrir una aplicacion etc, con esto podriamos usar nuestro movil como un control remoto para la pc. Veremos primero el codigo de la aplicacion servidor. He utilizado Eclipse para escribir el codigo en el repositorio encontraran el codigo. El proyecto del servidor se llama SimpleServer-Socket He  creado una clase que se llama Mensaje_data por lo que los ‘mensajes’ que se enviaran seran de este tipo, esta clase estara presente en las 2 aplicaciones   Mensaje_data  Este tiene los siguiente atributos.

  • Action :

llamare  mensaje de accion al mensaje que debe  tener en este atributo un valor difernte al -1 y estar comprendido entre 1 y 4. Cada valor tendra una accion especifica diferente, estos se definira mas abajo. last_msg debe ser false

  • Texto:

Llamare mensaje de texto al mensaje que tenga de valor action -1 y en texto debera tener lo que se desea enviar al server. last_msg debe ser false.

  • Ultimo mensaje:

Sera el mensaje que se envira para avisarle al servidor que debe cortar la conexion, se enviara al presionar desconectar. action=-1 texto=” ” last_msg=true Server.java server1 Algunas aclaraciones, En el metodo Exec  podremos hacer varias cosas ejucar un script abrir un pdf, un HTML, recomiendo visitar los siguientes link1 , link2  para mayor comprension. En este caso al presionar el boton de accion 1 abrira VLC,  en el numero 2 Chrome y en el 3 una terminal esto lo he hecho usando linux, en este punto dependera del sistema operativo que esten utilizando, si no ponemos el path del ejecutable, el directorio en el que se encuentra debe estar en la variable de entorno PATH, si no, no sabrá dónde econtrar el ejecutable.   Ahora es el turno de la aplicacion para android, recomiendo leer el comentario en cada caso: Proyecto: proyecto eclipse Al  AndroidManifest.xml y al layout en  layout/main no los voy a mostrar pueden verlos directamente desde el repositorio. Sockettest.java Explicare el funcionamiento paso a paso comentando en cada lineas. codigo droidcodigo droid2 Como habran  visto el funcionamiento es muy simple y no hay nada de mayor complejidad. para poder ejecutar el codigo java sin utilizar el eclipse deberan ejecutar desde su interprete de comandos segun el os que usen javac server.java y luego java server despues deberian ejecutar la app de android. Pueden ver un video sobre el funcionamiento de la aplicacion: Pueden descargar el codigo de este tutorial desde nuestro repositorio haciendo click en la imagen debajo. El proyecto de la aplicacion servidor se llama “SimpleServer-Socket” La aplicacion cliente “Socket-Client

Github

Con estos nuevos conocimiento se pueden hacer todo tipo de aplicaciones de diversos uso, hasta incluso si tienen conocimientos en electronica podria llegar a servirles para manipular circuitos desde su  telefono o hasta quien sabe incluso manejar un robot. En proximos tutoriales incluiremos una comunicacion bidireccional por lo que implementaremos en la app de android threads para manejar estos. Respecto de sockets en Java hay mucha informacion en internet, para armar este tutorial he utilizado los siguiente recursos, recomiendo que les hechen un  vistazo que son muy utiles: http://codigoprogramacion.com/java/103-sockets-en-java-con-cliente-y-servidor.html http://docs.oracle.com/javase/tutorial/networking/sockets/index.html http://casidiablo.net/java-socket-chat-basico/ http://www.chuidiang.com/java/sockets/socket.php http://mundogeek.net/archivos/2006/03/20/sockets-en-java/ http://www.helloandroid.com/tutorials/simple-connection-example-part-ii-tcp-communication http://docs.oracle.com/javase/tutorial/networking/sockets/readingWriting.html http://android-er.blogspot.com.ar/2011/01/simple-communication-using.html http://android-er.blogspot.com.ar/2011/01/implement-simple-socket-server-in.html http://adblogcat.com/ssl-sockets-android-and-server-using-a-certificate/Si alguno tiene experiencia en este tema y considera que en el tutorila hay algo incorrecto o no se entiende bien sientanse libre de usar el cuadro de comentarios de bajo al igual si tienen alguna consulta o sugerencia. Hasta el proximo tutorial! Sebastian.

¿Te gustó este tutorial? ¡Compártelo!

Comparte este post

Acerca de: sebastiancipolat

Desarrolador web y de aplicaciones moviles, apasionado por la tecnologia y todo lo relacionado con ella, Fanatico de la Ciencia Ficcion y del software libre. De Buenos Aires, Argentina

Sígueme en Twitter

Leer todos mis artículos

También puede interesarte

Comentarios de este artículo

  • http://twitter.com/flowwerg FlorenciaGomez

    Yeah this is great!, Congratulations! :D
    Cuidate loco

    • http://twitter.com/seba_cipolat sebastian cipolat

      Thanks flower! =)

  • http://twitter.com/jluisdev Jose Luis Cadena

    Me parece muy buen tutorial, aún no lo pruebo, sin embargo se que si funciona. Creo que
    falta un poco explicar que existen 2 protocolos TCP y UDP y que ambos se pueden implementar en Android. Cada uno con sus diferentes usos. Fuera de eso me parece muy bien explicado. Saludos

    • http://twitter.com/seba_cipolat sebastian cipolat

      Gracias!

      • Javier

        `Hola amigo me gustaria saber que puedo haer para enviar imagenes en lugar de mensajes osea screenshots

        • http://sebastiancipolat.com.ar sebastiancipolat

          Hola, revisa los comentarios anteriores creo q ya preguntaron eso.

  • http://twitter.com/JaimeYesidLeon Jaime Leon

    Hey Sebastian esta genial este tutorial, tanto que voy ha hacerlo y probarlo lo mas pronto posible.
    Este sistema es igual para comunicacion entre 2 dispositivos con Bluethoot?, o es posible hacer que 2 dispositivos Android se comuniquen con WiFi?.

    Muchas gracias amigo

    Jaime Leon

    • http://twitter.com/seba_cipolat sebastian cipolat

      Hola jaime e alegro que te halla gustado!.

      Respecto del Bluethoot creo que es diferente no es como una conexion de red no usa el protocolo TCP/IP no creo que funcione seguramente se podra hacer pero de otra forma no investigo sobre eso todavia.
      sobre si dos dispositivos con android se comuniquen con wifi creo que si seria posible siempre que los dos esten conectados al mismo wifi.
      Ahora si te referis que se conecten directamente uno con el otro mediante wifi de forma adhoc no te sabria decir si es posible realizar en android ese tipo de conexion pero si se llegaran a conectar y ambos tendrian una ip en el mismo segmento deberia de funcionar.
      cualquier cosa avisame.

      Saludos!

  • http://twitter.com/fanscprada Camilo Andrés Prada

    Muy interesante…. :)

  • Ibanezgomez

    Muchísimas gracias, es muy interesante, a modo de “pequeña ampliación” se te ocurre por donde empezar para que el cliente pueda mandarle imágenes también a servidor?

    Gracias, un saludo

  • Matias

    Una consulta, soy totalmente novato en el tema de android, pero a mi y a una amiga nos encargaron hacer una aplicación la cual consiste en leer un pdf que va a estar alojado en un servidor, básicamente es eso, un lector de noticias (las noticias las van a subir como un pdf a un servidor), mi aplicación tendría que conectarse a este mismo y permitir leer online o descargar ese mismo pdf, para hacer esto necesito esto de los sockets???
    Soy totalmente novato y cualquier ayuda que me puedan dar para encaminarme en como realizar la aplicacion o cualquier consejo es aceptado!
    Saludos, leo siempre el blog y esta muy bueno.

  • Matias

    Una consulta, soy totalmente novato en el tema de android, pero a mi y a una amiga nos encargaron hacer una aplicación la cual consiste en leer un pdf que va a estar alojado en un servidor, básicamente es eso, un lector de noticias (las noticias las van a subir como un pdf a un servidor), mi aplicación tendría que conectarse a este mismo y permitir leer online o descargar ese mismo pdf, para hacer esto necesito esto de los sockets???
    Soy totalmente novato y cualquier ayuda que me puedan dar para encaminarme en como realizar la aplicacion o cualquier consejo es aceptado!
    Saludos, leo siempre el blog y esta muy bueno.

    • http://twitter.com/seba_cipolat sebastian cipolat

      Hola,

      Ese tipo de cosas son muy complejas de implementar,
      ya que ademas de la app de android tiene que haber una plataforma web que sea a la cual se acceda y por ej permita. ver desde el navegador del telefono ese pdf. o descargarlo o hasta incluso leer una respuesta JSON ó XML del servidor con los datos del pdf la eleccion, de que usar depende de un analisis profundo sobre el tema.
      Para este caso NO seria necesario usar esto de sockets que describo en el tutorial.
      Es algo complejo ya que es necesario tener conocimientos sobre diferentes tecnologias.

      suerte con el proyecto. saludos

  • pedro

    Cual seria el comando para abrir algun programa desde windows como en el caso de ubunto que usan el opt, como se aria en windows para abrir programas

  • Violeta Salatino

    Genial este tutorial! cai por aca buscando como crear un chat al stylo whatsapp. o sea me interesaria saber como enviar mensajes,fotos entre diversos dispositivos android conectados via WIFI o paquetes de datos, utilizando sockets lo puedo lograr? me tirarias una pista de como empezar o sobre que temas buscar para lograr lo que pretendo. desde ya muchas gracias genial el blog

    • http://twitter.com/seba_cipolat sebastian cipolat

      Hola que bueno que te halla gustado,
      respondiendo a tu pregunta con sockets se podria hacer, deberia haber una aplicacion servidor a la cual se conecten las app cliente en android, el servidor deberia manejar muliples conexiones
      por lo que vas a tener que usar threads. para el tema de las fotos no se, supongo que deberias buscar la forma de pasar una foto por un socket hasta el servidor y este despues deberia volver a enviarla al destinatario.
      Como veras esto es ya es de una complejidad avanzada y excede ampliamente los temas de este tutorial pero si puede servir de base.
      Te dejo un link de un tutorial de una aplicacion de chat (muy simple) que maneja multiples conexiones, lo unico es que tanto el cliente como el servidor esta en JAVA J2SE no para android pero si te puede servir de ejemplo para hace un cliente en android.
      http://www.chuidiang.com/java/sockets/hilos/socket_hilos.php

      Otra opcion es utilizar algun protocolo de chat como XMMP o jabber del cual hay mucha informacion en internet, te podrias bajar un servidor que maneje alguno de estos protocolos por lo gral son opensource, configurarlo a tu gusto y hacer un cliente en android.
      te dejo un link sobre esto:
      http://blog.chuidiang.com/2011/04/22/haciendo-un-cliente-de-chat-xmpp/
      hay algunos ejemplos en android que te podes bajar.
      Si yo deberia hacer una aplicacion de chat escogeria hacerla de esta ultima forma.
      de momento no trabaje con eso asi q mas no te podria ayudar.
      espero que te sirva
      Saludos.

  • http://twitter.com/roberto_enrique Enrique Gudiño

    Hola que tal, esta muy interesante y útil este tutorial, como puedo hacer para que los datos que mande de la aplicacion del servidor a la aplicación cliente sea la url de un video y este se pueda reproducir. Gracias

    • http://twitter.com/seba_cipolat sebastian cipolat

      Hola,
      Cuando del lado del cliente se reciba algun mensaje enviado por el server habria que tomar la url del video y mostrarla, por ej si el video es de youtube podrias usar esto
      http://androideity.com/2012/05/13/reproducir-videos-de-youtube-desde-tu-app-android/

      • http://twitter.com/roberto_enrique Enrique Gudiño

        ok, gracias, bueno en este caso son videos independientes no son de youtube, es material de audio y video de conferencias y mi objetivo es reproducirlos desde la url

        • http://twitter.com/seba_cipolat sebastian cipolat

          Lo vas a tener mas complicado entonces, respecto del servidor:
          es un servidor de video que pueda hacer un streaming del video? tipo upnp o algun otro protocolo??

          o estos videos estan almacenados en el disco y te gustaria que lo pudieses ver como una especie de visor de video como los q hay en algunas web pero en tu android?
          Si este es el caso no te sabria decir si estos es posible de hacerse en android, te recomendaria tratar de implementar algo parecido al primer caso tratando de implementar algun tipo de servidor que permita realizar streaming de video y podrias desarrollar alguna especie de app cliente que reciba como parametro la url para luego poder ver el video o buscar si hay algun cliente ya hecho y ver si te sirve.

          Nunca he realizado algo similiar y no te puedo aseguar si lo que te dije es aplicable para tu caso o no pero busque en google y encontre lo siguiente. tal vez te pueda servir.

          http://en.wikipedia.org/wiki/List_of_UPnP_AV_media_servers_and_clients
          http://lgallardo.com/2011/10/27/ver-peliculas-en-android-desde-un-servidor-upnp/

          saludos

          • http://twitter.com/roberto_enrique Enrique Gudiño

            Hola que tal, gracias por la información, seré lo más claro posible, lo que quiero hacer es una aplicación como youtube que es a lo que se le llama video en demanda para que estemos en el mismo contexto también aclaro que streaming es transmisión de audio y video EN VIVO yo NO quiero hacer streaming la finalidad de mi app es reproducir videos que son videos de conferencias en formato mp4(m4v) que se pueden reproducir en android si no duran más de 10 min donde también tendria que buscar la manera de que se descarguen bien todos los datos por medio del buffer y también material de sólo audio que es mp3 pero que ahi no es tan laborioso el asunto, si tu me puedes orientar ¿de que forma puedo implementar esto? ¿si me sirven los sockets o de que otra forma? Muchas gracias por tu atención Sebastian saludos

          • http://twitter.com/seba_cipolat sebastian cipolat

            Hola Enrique,

            La verdad que nunca hice algo de ese estilo de no te puedo orientar de momento.
            yo que vos buscaria en internar alguna app parecida y tratar de analizarla, o podes postear esta misma consulta en algun foro de android, tal vez tengas suerte.

            Si alguno tiene alguna idea siéntase libre de compartirla.

            Saludos

  • Alejandro

    Hola Sebastian, me parece muy interesante y de gran ayuda este tutorial!
    Por otro lado estoy tratando de implementarlo pues creo que es el punto de partida para una investigación que estoy realizando. El tema es que he implementado la aplicación en la computadora y el dispositivo android, pero después de digitar la dir. ip y el puerto, le doy a conectar me sale siempre error! en la consola de Android, he quitado el firewall de windows, inclusive pero no c llega a conectar.

    En el LogCat de Android Me aparece el siguiente mensaje:

    Error connect() android.os.NetworkOnMainThreadExeption

    Entonces quería consultarte si habría algún setting adicional que no estoy considerando o cual podría ser la razón.

    Un abazo

    Alejandro

    • http://twitter.com/seba_cipolat sebastian cipolat

      Hola en donde lo estas probando en el emulador o en algun telefono?
      que version de android es?
      No te sabria decir por q da ese error, habria que analizar por q se produce el error.
      Da algun otro error en el logcat?
      Podes probar correr la aplicacion en modo debug y ver cuando es que da el error.

      saludos.

    • Alejandro

      Hola Sebastian, gracias por tu respuesta, ya está corriendo y funcionando, era un error en el layout, estos días me he ocupado de crear la aplicación servidor en el teléfono y lo he logrado, pero tengo un problema con los try & catch que permiten abrir y leer el socket, pasa que mientras esté en la subrutina del try-catch no se publican los mensajes en la caja de texto (la uso a modo de consola) y solamente cuando termino la conexión se publican estos.
      Sabes si hay alguna manera de reemplazar estas sentencias (try-catch), de tal forma que no se interrumpa el normal funcionamiento del programa….Gracias por la respuesta que me puedas dar! Un abrazo

  • http://www.facebook.com/profile.php?id=100000177315271 William Vladimir Rodríguez Qui

    hola soy nuevo por aquí y estoy empezando a programar aplicaciones para android bueno es lo que me dejaron en mi trabajo :) .
    tengo que hacer una aplicación como un mantenimiento buscar, modificar, insertar , listar
    de los ejemplos que tengo me he podido guiar , la aplicacion para buscar normal funciona para insertar tan bien pero por separado en proyectos diferentes, ahora tengo q hacer un formulario que busque y luego cargue los datos en las cajas de texto y combobox y bueno esi si funciona lo siguiente que en ese formulario pueda modificar y guardarlo en la base de datos remota sql de la empresa a traves de un pagina php que cree y que a sido subida a la web por ahora lo estoy probando todo a modo local, bueno el problema que tengo que no modifica la aparece un error inesperado y la aplicación se cierra y e estado probando y justo cuando se ejecuta esta parte :

    JSONArray jdata=post.getserverdata(postparameters2send, URL_connect);

    donde envía los parámetros a la pagina php es cuando deja de funcionar :( pero normal funciona el buscar y tiene la misma estructura.
    y a mi ese error me salia antes pero cuando no había puesto:

    pero la aplicación si tiene eso en el androidmanifiest

    o es que esa anterior linea de código solo da permiso al primer activity?

    porfavor espero que sepan de alguna solución para este problema y pueda ayudar :)

    • http://twitter.com/seba_cipolat sebastian cipolat

      Hola,
      Los permisos son para toda la aplicacion en gral.
      Respecto de tu consulta no entiendo que tiene que ver con el tema que tocamos en este post.?
      de todas formas hay un post esta relacionados con tu consulta que tal vez te sirva

      http://androideity.com/2012/06/03/consultar-un-servicio-web-en-android-parte-i/

      Saludos.

      • http://www.facebook.com/profile.php?id=100000177315271 William Vladimir Rodríguez Qui

        gracias por tu ayuda pero no me sirve de nada, mi problema es que solo el activity con que comienzo es el que tiene acceso a internet y realiza cualquier procedimiento, pero cuando de este paso a otro activity y en este ultimo quiero realizar por ejemplo un modificar y envio los datos a la pagina web es cuando la aplicación deja de funcionar :( , ya probé un insertar y modificar y buscar pero separados ahora que los quiero unir en una sola aplicación solo el primer activity funciona :(
        no se si me pudieras recomendar alguna pagina o contacto que me pueda ayudar :)

        • http://twitter.com/seba_cipolat sebastian cipolat

          En el logcat te da algun error?

          • http://www.facebook.com/profile.php?id=100000177315271 William Vladimir Rodríguez Qui

            no usaba el logcat pero ahora lo puse pero igual :S se cierra la aplicacion, use un try catch pero en la exception solo me muestra java.lang.NullPointerException :(

          • http://twitter.com/seba_cipolat sebastian cipolat

            Hola,
            Al logcat deberias revisarlo siempre,
            Si muestra NullPointerException puede deberse a que estas tratando de acceder a un miembro (método o atributo) de un objeto para el que todavía no hemos reservado memoria, o hasta incluso no hallas inicializado algun objeto.
            Te recomiendo que corras la aplicacion en modo debug y trates de encontrar en que parte del codigo ocurre este error, esto es fundamental para poder dar solucion al problema.

            Saludos

          • http://www.facebook.com/profile.php?id=100000177315271 William Vladimir Rodríguez Qui

            :) ok eso hare ;)

          • http://twitter.com/seba_cipolat sebastian cipolat

            El logcat es el log general de android
            ahi se muestra todo.
            http://developer.android.com/tools/help/logcat.html

            Es algo propio de android independiente del IDE que uses.
            Netbeans seguramente debe tener algun plugin como tiene Eclipse para poder usar android de seguro tambien tenga alguna opcion para ver el logcat.

            saludos.

      • http://www.facebook.com/profile.php?id=100000177315271 William Vladimir Rodríguez Qui

        uhmm..

    • Nicolas

      Hola queria saber si habias solucionado el problema, queri saber si me podrias ayudar por favor, desde ya muchas gracias.

      • http://www.facebook.com/profile.php?id=100000177315271 William Vladimir Rodríguez Qui

        Si http://tallerii.comuf.com/ descargate de ahi el apk y pruebalo :) ahora mi problema es hacer lo mismo de android a php pero esta ves tengo que hacer de una aplicacion escritorio java conectarse al webservice :( si sabes como hacer eso porfavor ayudame :P

  • Edgar Garcia

    Una pregunta, como puedo descargar el proyecto? es que me marca error al querer descargarlo.

    y para cambiar los datos que se envian se tendria que cambiar el tipo de stream no?

    lo que quiero es poder enviar archivos del cliente al servidor en formato txt.

    • http://twitter.com/seba_cipolat sebastian cipolat

      Hola para descargar el proyecto lo podes descargar desde el eclipse, o si no podes
      bajar todo junto comprimido, busca una opcion que dice download

      Saludos.

  • I72jaban

    Hola!

    Muy bueno el tutorial. Una pregunta: has incluido algún tutorial sobre comunicación bidireccional?

    gracias!

    • http://twitter.com/seba_cipolat sebastian cipolat

      Hola,
      En algun momento tengo pensado hacer uno, pero no todavia.
      igual en internet hay muchos ejemplos si entendes el funcionamiento de este lo otro
      lo podes aprender facilmente.

      saludos

  • http://twitter.com/chien_enrage Talk Show Host

    Me estoy iniciando en la creacion de sockets para android y tengo una pregunta con respecto al codigo que muestras, dentro del mismo, podrias mencionar en que parte incluyes la frase “HOLA” que muestra en el cuadro de texto? y como podria evadir el boton de enviar, para que automaticamente, al momento de introducir cualquier caracter, se envie sin tener que presionar el boton mencionado. Muchas gracias por tu post y tu respuesta.

  • Fer

    Men que tal soy nuevo con el android me podrías decir como hago para que eclipse reconozca las librerias de android??

    • http://twitter.com/seba_cipolat sebastian cipolat

      Hola,
      cuando decis librerias de android te referis al SDK????

      • Fer

        Exactamente al SDK creo que me exprese mal, lo que pasa es que a mi me marca error eclipse

  • Aguilar Eliyamiley

    hola necesito saber como hacer un socket de bluetooth en android, donde reciba datos de un sensor por fa lo necesito es para un trabajo final en mi escuela

    • http://twitter.com/seba_cipolat sebastian cipolat

      buscalo en google hay varios ejemplos.

  • Galachelopez

    hola, buscando información sobre imagenes para aplicaciones android he llegado a tu artículo que agradezco. Quería plantearte una pregunta. Estoy preparando una aplicación para android que obtendrá información a través de JSON, pero me he dado cuenta que esto no sirve para obtener fotos del servidor, las que en cada momento necesite. ¿Sería una buena idea la opción de socket para obtenerlas del servidor? o ¿hay alguna otra forma?
    Gracias
    José Miguel

  • Pingback: Multiplayer online games for Android : Android Community - For Application Development

  • Nicolas

    Falta el contenido que se genera automaticamente en los archivos que seria la carpeta gen, que contiene la clase R con todos los elementos de la vista. No lo puedo correr debido a eso, si me estoy equivocando en la ejecucion o me falta configurar algo sera bienvenida la sugerencia gracias

    • http://twitter.com/seba_cipolat sebastian cipolat

      vaya que raro, lo voy a checkear.

  • ANGL_09

    hola leí tu tutorial y me parece muy interesante, estoy trantado de unas aplicación android para leer datos de un server slq server 2008 y usar un socket hasta el momento lo mas sencillo, de igual manera no se si me pudieras apoyar con algun tutorial para hacer la conxeion directa del dispositivo al servidor

    • http://twitter.com/seba_cipolat sebastian cipolat

      Segun tengo entendido no hay ningun forma de estableces una conexion directa r con el servidor de base de datos, por lo gral se suele usar un webservice que devuelva los datos en json o xml.
      saludos.

  • Eduardo Salazar

    Hola me sirvió mucho tu tutorial logré realizar una conección TCP Servidor-Cliente con conexión vía WIFI aunque modificando algunas cosas, mi pregunta es la siguiente:

    ya tengo mi proyecto listo y probado como hago para cargar la aplicación Cliente en mi dispositivo android?? gracias por tu ayuda

    • http://twitter.com/seba_cipolat sebastian cipolat

      Busca dentro del proyecto de Eclipse dentro de la carpeta bin el archivo q termina con .apk

  • http://www.facebook.com/jmotof Jaimoto Flauterö Valencia

    Hola!

    Muy Interesante!

    También hay una implementación de Chat lista sobre XMPP y la cual también funciona para otros sistemas operativos móviles.

    http://quickblox.com/developers/Android_XMPP_Chat_Sample

    Es una solución de Backend en la nube que agiliza el desarrollo de aplicaciones móviles!

    Saludo!

  • Miguel Angel Poza

    Hola! Muy didáctico este tururial.
    Me surge una duda, pero me da que es algo del eclipse. He hecho tanto el servidor como el cliente con eclipse pero poniendo distinto nombre de paquete en cada uno de ellos. El caso que conecta pero cuando envío el mensaje de texto da un error el server y viendo la secuencia del error de la excepción me dice que no encuentra la clase Mensaje_data. Lo soluciono poniendo el mismo paquete en ambas aplicaciones.
    Creía que eran dos entidades distintas sin embargo el server buscaba en el paquete del cliente.
    Mi pregunta es si cuando mandamos el mensaje desde el cliente al recibirlo el server y extraer el objeto este lleva consigo el nombre del paquete del programa que lo origino y lo reclama en el server.
    Es la duda que me corroe. Un saludo y muchas gracias.

  • mr. S.M

    Muy bueno

  • Bob

    Muy bien explicado Sebastián!
    Una pregunta, que habría que hacer para que la aplicación del lado del servidor fuera online? LLevo un tiempo queriendo poner modo online a mi juego android. Graciass.:D

    • https://twitter.com/#!/seba_cipolat sebastiancipolat

      Hola,
      Para que fuese online, la parte servidor de la aplicacion deberia ejecutarse en algun entorno que tenga salida a internet.
      Para conectarte desde la parte de android en lugar de usar la ip local del “servidor” deberias usar la que da el servidor de internet o algun dominio.
      A esto incluso podes probarlo vos mismo en tu computadora lo unico deberias verificar es que el puerto que usa el servidor tenga via libre a internet y no este bloqueado por ningun firewall.
      Tambien si vas a usar mi app android cliente de ejemplo para internet la conexion va a tardar mas y puede que la app de algun fallo en algun momento ya q no tuve encueta eso a la hora de hacerla.

      Saludos

    • http://twitter.com/seba_cipolat sebastian cipolat

      Hola,
      Si por ejemplo queres acceder a la app servidor que esta en tu pc por internet,
      deberias verificar que el puert que usa la app no este bloqueado por un firewall.
      y desde la app cliente android para conectarse en lugar de usar la ip local deberias usar la ip que te da tu isp.

      Saludos

  • Marcelo Leiva

    Se ve muy bueno justo ahora necesito probar algo asi

  • Lydia Manzanares Borreguero

    Hola Sebastián! Felicitaciones por el tutorial!
    Estoy interesada en la comunicación bidireccional con threads mediante sockets. Para cuando piensas que tendréis el tutorial?

    • https://twitter.com/#!/seba_cipolat sebastiancipolat

      Hola no te podria dar una fecha,
      de todas formas en internet hay informacion sobre eso.
      Saludos

    • http://twitter.com/seba_cipolat sebastian cipolat

      Hola.
      De momento no tengo planeado un tutorial sobre eso.
      igual si entendistes esto no vas a tener problema en implementar q sea bidireccional.
      en internet hay informacion sobre eso.
      saludos

  • abraham

    hola que tal me podrias decir como mando una imagen por medio de un socket es que ando desarrollando una app tipo escritorio remoto y e batallado con la imagen por que la que ice en java es con buffer y en android son bitmap el punto mio es mandar una imagen por un soket :D haber si me podrias ayudar

    • http://twitter.com/seba_cipolat sebastian cipolat

      Hola,
      Revisa los comentarios anteriores que ya lo preguntaron a eso.
      saludos

      • abaham

        ok men ya los habia checado pero no me sacaron de la duda gracias de todas maneras :D

  • compagm

    Muy buen aporte, aun q me está fallando al tratar de enviar el texto. me dice:
    java.lang.ClassNotFoundException: com.test.socketclient.Mensaje_data en el servidor no entiendo por q. Pues ese paquete existe pero en el cliente el servidor existe la clase pero en otro paquete.

    • http://twitter.com/seba_cipolat sebastian cipolat

      Hola que raro, verifique el codigo en el repositorio y la clase com.test.socketclient.Mensaje_data si esta en el servidor.
      proba bajando el codigo de nuevo.
      Saludos.

  • http://twitter.com/Ness_reaper Ness Reaper

    zzz hola amigo tengo un problema consegui que funcionara pero tengo un problema al momento de traslaparlo a un movil usa una api en especifico o algo por el estilo pues no me contesta

    • http://twitter.com/seba_cipolat sebastian cipolat

      Hola,
      No usa ninguna api especifico o libreria adicional, solo lo que proporciona el sdk de android.

  • kasu

    ahhh necesito hecho uno pero en c++ o en c… donde los puedo conseguir???? y que envie objeto, se puede por cierto????

    • http://twitter.com/seba_cipolat sebastian cipolat

      Hola, ni idea. yo buscaria en google.

  • jhon

    Que tal.
    Necesito acceder a un servidor PACs de libre acceso desde Android
    para descargar imágenes médicas, debo tener presente sólo lo de los sockets o habría a que agregar algo más.

    • https://twitter.com/#!/seba_cipolat sebastiancipolat

      Hola,
      No nunca utilize un servidor PACs pero si podes acceder a las imagenes por http las podes descargar simplemente sin usar sockets de esta forma, revisa los comentarios anteriores que ya hubo una pregunta sobre eso.
      saludos.

    • http://twitter.com/seba_cipolat sebastian cipolat

      Hola,
      No nunca utilize un servidor PACs pero si podes acceder a las imagenes por http las podes descargar simplemente sin usar sockets de esta forma, revisa los comentarios anteriores que ya hubo una pregunta sobre eso.
      saludos.

  • patriotaSJ

    Como sé el IP y numeró de puerto del SERVIDOR?. gracias

    • https://twitter.com/#!/seba_cipolat sebastiancipolat

      Hola,
      La IP es la del Pc o servidor en donde va a correr la app servidor.
      El puerto que use en el tutorial es el 5555.
      saludos

    • http://twitter.com/seba_cipolat sebastian cipolat

      Hola,
      La IP es la del Pc o servidor en donde va a correr la app servidor.
      El puerto que use en el tutorial es el 5555.
      saludos

  • ramiro

    Hola, Si utilizo windows en que cambiaria esto

    String ACTNUM = null;
    String ACT1 = “vlc”;// abrir VLC
    String ACT2 = “/opt/google/chrome/google-chrome %U”;// Chrome
    String ACT3 = “gnome-terminal”;// terminal
    String ACT4 = “”;

    • https://twitter.com/#!/seba_cipolat sebastiancipolat

      Hola, eso es para linux solamente,
      dale un vistazo al tutorial que hay un link sobre windows.

      saludos.

    • http://twitter.com/seba_cipolat sebastian cipolat

      Hola, eso es para linux solamente,
      dale un vistazo al tutorial que hay un link sobre como deberia ser en windows.

      saludos.

    • LUICIT

      si eres usuario windows tienes que usar el comando cmd c/ start y la aplicacion que desees por ejemplo yo uso estos y de esta manera espero y a ti te sirva

      String ACT1 = “cmd /c start wmplayer.exe”;// abrir Windows Media Player
      String ACT2 = “cmd /c start chrome.exe”;// Chrome
      String ACT3 = “cmd /c start cmd”;// terminal o el simbolo del sistema o cmd
      String ACT4 = “”;

      • http://sebastiancipolat.com.ar sebastiancipolat

        Hola, genial gracias por el aporte.
        saludos.

  • Carlos Saldivia

    Buenas amigo, e seguido el tutorial al pie de la letra, pero no logro que se conecte, coloco la IP lan que me dice el router, desactivo el Kaspersky para evitar cualquier bloqueo, uso el puerto 5555 asi como lo indicas pero siempre me sale este error “android.os.NetworkOnMainThreadException” y no logro que se conecte. Que pudiera hacer en ese caso? Saludos.

  • Carlos Saldivia

    E buscado desde Kaspersky y me sale:

    Javaw.exe-> puerto local:5555 pero la direccion IP sale en 0 todo, porque sera?

    • https://twitter.com/#!/seba_cipolat sebastiancipolat

      No uso windows ni kaspersky asi q no te sabria decir pero javaw es el proceso de la app servidor respecto de la ip 0.0.0.0 no es una ip real seguramente puede significar algun tipo de enrutamiento o q tal vez lo puertos esten abiertos, dale un vistazo a la documentacion del antivirus.

      Saludos

    • http://twitter.com/seba_cipolat sebastian cipolat

      No uso windows ni kaspersky asi q no te sabria decir pero javaw es el proceso de la app servidor respecto de la ip 0.0.0.0 no es una ip real seguramente puede significar algun tipo de enrutamiento o q tal vez lo puertos esten abiertos, dale un vistazo a la documentacion del antivirus.

      Saludos

  • Carlos Saldivia

    Buenas, e intentado correr la app en el simulador y alli no arroja el error este: “android.os.NetworkOnMainThreadException” es decir, el error aparece cuando lo corro desde el celular, tengo un nexus 4, cual podria ser el problema o como podria solucionarlo?

  • Jhon

    Al descargar la parte cliente del proyecto y al abrirla con Eclipse se tiene el siguiente error:

    Android requires compiler compliance level 5.0 or 6.0. Found ’1.7′ instead. Please use Android Tools > Fix Project Properties.

    Gracias

  • http://www.facebook.com/adan.condoric Adan Condori C

    muy bueno…. pero quería saber si el servidor puede estar en mi mobil para no depender de una pc y solo por wifi

    • http://twitter.com/seba_cipolat sebastian cipolat

      Hola, si el servidor podria estar tranquilamente en un mobil y usando la conexion por wifi.
      lo unico el codigo q hice del servidor no funciona en un telefono pero no seria muy dificil basarse en el y escribir uno en android.
      Saludos.

  • Principiante

    Buenas noches no sé si es el lugar adecuado pero tengo muchas dudas acerca de un tema. ¿Alguien me podría decir si es posible sacar en una actividad de una aplicación android los tweet de una cuenta concretas? Me explico un poco más, estoy haciendo una aplicación y en una opción quiero que se representen los tweets de dos cuentas relacionadas con ella.

    Un saludo y muchísimas gracias

  • arturo

    hola. me podrias ayudar?? al importar el del cliente me marca errores en los archivos main.xml y en el strings.xml
    espero q me puedas ayudar para corregirlos :) gracias

    • https://twitter.com/#!/seba_cipolat sebastiancipolat

      Que dicen los errores?

  • Give

    Hola que tal estaba probando tu programa y todo bien pero queria preguntarte como hago para por ejemplo mi android lo tengo en otro lado y la pc en casa, tendria que poner la ip publica de la pc y el puerto, ya que el android no estaria conectada en la red de la pc, entonces faltaria cambiar algo al programa? o solo es configurar mi router tipo Zyxel?
    Gracias por todo

    • https://twitter.com/#!/seba_cipolat sebastiancipolat

      Hola, buena pregunta.
      Para poder usarlo atravez de internet tenes q hacer lo siguiente:
      El codigo de la app servidor y cliente no es necesario tocarlo, lo unico q podrias modificar es en la app servidor el numero de puerto si queres usar otro.
      En la red de tu casa lo que deberias hacer en tu router es configurar el firewall para que no bloque el puerto que se va a usar para la conexion, por ej en este caso si no cambias el puerto es el 5555 deberias decirle que para la ip de tu pc (ojo, no la 127.0.0.1 si no la que lo identifica en la red tipo 192.168.. ) no bloque el puerto 5555 usando para protocolo TCP.
      con eso bastaria del lado de tu red, obviamente no tenes q tener ningun firewall en la pc q lo bloque tambien.
      si haciendo esto te da problemas fijate si tu router toma del modem una ip publica o privada(en caso de que tengas 2 equipos por separado)

      para conectarte con tu telefono lo que deberias hacer es en la app cliente en el campo “IP” poner la ip publica que te da tu isp eso lo podes ver dentro de tu router o en alguna pagina como http://www.cualesmiip.com.
      si todo sale bien deberias poder conectarte, obviamente al estar atravez de internet todo va a ser mas lento que en LAN.
      Puede ocurrir que si accedes a internet con el telefono usando 3G no funcione ya que algunos proveedores bloquean los puertos.
      Avísame si pudistes conectarlo.

      saludos.

    • Carlos Rafael Flores Ramirez

      .

  • Jesús

    Hola muy bueno el tutorial. Tengo una pregunta, desarrolle una app parecida a esta que simplemente consiste en abrir determinadas aplicaciones, y tengo un problema muy extraño, a ver si me lo podrías solucionar.

    - Cuando lo emulo desde el pc va sin problemas, abre y cierra el socket y, por tanto, me abre las aplicaciones que yo quiero, pero, a la hora de emularlo desde el dispositivo android, ni siquiera me abre el socket. ¿Por que puede ser esto?

    • https://twitter.com/#!/seba_cipolat sebastiancipolat

      Hola, ni idea habria que ver el log si esta dando algun error.

  • javier solis

    y conexion a BD mysql por ejemplo , hay un driver o algo para la conexion ??

    • https://twitter.com/#!/seba_cipolat sebastiancipolat

      Hola, dale un vistazo a mi post de login en php y MySql usando android

  • jose

    hola muy interesante Sebastian necesito una consulta no hay tutos de conexiones bluetooth es que estoy necesitando si me recomiendas algunos es que quiero hacer una app para monitorear las pulsaciones del corazon con una banda polar y estoy perdido en la parte de la conexion con el dispositivo

  • Alejandro P.

    Excelente simplemente copiando me funciono al primer intento…Dejame decirte que ejecute la app desde una tablet y me sorprendio que se ajustara al tamaño.

    Intentare crear una app servidor con tu codigo y hacerlo bidireccional, pero gracias por la ayuda.

    • http://sebastiancipolat.com.ar sebastiancipolat

      Hola, Vaya que bueno que se halla ajustado al tamaño hubiese apostado a que no.
      saludos

  • Marc Valdivia Arriaza

    Hola una pregunta, en el caso que yo quisiese conectarme desde otra conexion, por ejemplo desde casa de un amigo a mi casa como lo podria hacer o con la tarifa de datos sin tener el wifi encendido, grácias :)

    • http://sebastiancipolat.com.ar sebastiancipolat

      Hola, dale un vistazo a un par de comentarios anteriores que ya preguntaron lo mismo y di una explicacion sobre como hacerlo.
      saludos

  • Ricardo Laredo

    Hola pariente, resulta que estoy intentando hacer un servidor en android, que se pueda realizar la conexion entre moviles y no con intervencion de ningun otro dispositivo como router’s, bueno ya se logro realizar la conexion pero que ocurre que cuando el cliente es una pc funciona perfectamente y no asi cuando el cliente es un movil, tienes alguna idea de porque?

    • http://sebastiancipolat.com.ar sebastiancipolat

      Hola, la verdad no te sabria decir sin meter mano y saber un poco mas, no se como se conecten pero se me viene a la mente si los moviles se conectan entre si usando 3G tal vez este ahi el problema ya que es una conexion a internet diferente al que acceda una pc y tiene alguna limitaciones por el proveedor a veces, si se conectan asi dale un vistazo a los comentarios anteriores que ya hubo algunas preguntas sobre eso.

      Saludos

    • sergio

      Es por que sos un chupita

  • Marcos Diego

    Felicitaciones por este didactico tutorial. Me surge una consulta…Es posible hacer esto pero en la direccion inversa?

    • http://sebastiancipolat.com.ar sebastiancipolat

      Hola si se puede hacer en la direccion inversa.

  • damian8019

    Hola Sebastián,
    muy bueno el tutorial. Tengo una aplicación que necesita conectarse a un PC por
    Wifi y desde una carpeta compartida obtener o copiar un archivo. Esto lo puedo
    hacer con Socket?? a que puerto me tengo que conectar??. Tenés algún ejemplo??

    Saludos desde Buenos Aires, Argentina

  • Abel Garcia

    Hola!

    Tengo una duda! Respecto a las conexiones.

    Tengo un servidor para enviar y recibir datos. Y una aplicación para realizar estos servicios. Es decir desde mi móvil envió y veo los datos almacenados en el servidor. Va bien con un móvil, pero al momento de querer realizar una consulta desde otro móvil este me manda un error de conexión, que no se logro conectar con el servidor. Ya vi las configuraciones en ambos moviles y estan iguales! Y los permisos son los mismos (es la misma app). Quisiera saber si se debe a la comunicacion de los sockets o alguna idea que tengas! Seria de mucha ayuda!

    Gracias!

    • http://sebastiancipolat.com.ar sebastiancipolat

      Hola, no te sabria decir,

      saludos

    • Jorge Flores

      Hola, el servidor soporta conexiones simultáneas?

      • http://sebastiancipolat.com.ar sebastiancipolat

        Hola, no solamente soporta una, recuerda que es el codigo es solo a modo de ejemplo para dar una idea de como funciona solamente.
        Saludos.

      • http://sebastiancipolat.com.ar sebastiancipolat

        Hola, no soporta solamente de un solo cliente.

  • Cesar Cerrato

    Hola quisiera comunicarme contigo necesito hacerte algunas preguntas sobre este tutorial

    • http://sebastiancipolat.com.ar sebastiancipolat

      Hola,puedes utilizar la caja de comentarios para eso.

      saludos

  • jose foronda

    una consulta: al importar el codigo, el eclipse solo reconoce el cliente al poner android project from existing code, pero no al servidor, ya me baje el codigo como 3 veces pero igual no reconoce al codigo del servidor

    • Jorge Flores

      El servidor es una aplicación en Java, sólo tienes que compilarlo como tal. Saludos.

  • MrChikip

    MEN, EXELENTE TUTO! ME ACABAS DE SACAR DE UNA GRANDE!!! MIL GRACIAS!!

    • sebastian cipolat

      Hola, Genial. me alegro que ye sirva.
      Saludos.

  • John Arellano Riera

    Hola! =D Excelente aporte
    Una pregunta amigo,si quisiera hacer la conexión pero varios clientes a un mismo servidor, que es lo que cambiaría???
    De ante mano gracias DTB. :)

    • http://sebastiancipolat.com.ar sebastiancipolat

      Hola,
      Del lado del uso de la aplicacion podria como ser como es ahora, en el codigo habria que modificar una buena parte ya que solo lo hice para un solo cliente, pero facilmente puede adaptarse para soportar multiples clientes.

      Saludos

    • sebastian cipolat

      Hola, habria que crear un hilo con cada conexion.
      saludos

  • Pablo

    Hola. Como debo hacer para acceder mediante internet? Actualmente solo puedo acceder usando la IP local. De que forma puedo conectar mediante internet? (IP Global)

    • http://sebastiancipolat.com.ar sebastiancipolat

      Hola, revisa los comentarios anteriores que ya preguntaron eso y lo he explicado.

      Saludos.

    • sebastian cipolat

      Hola,
      Revisa los comentarios que ya preguntaron eso.
      Saludos.

  • Andrés Vallejo Poveda

    Hola Sebastián, quiero agradecerte por tu ayuda al compartir este gran tutorial, yo realmente es la segunda vez que uso eclipse para android y es mas nunca he programado en java sino en otros lenguajes de programación, aunque ya he entendido el proceso del programa antes indicado, lo que quisiera es saber si como lo has dicho en el texto del tutorial haz desarrollado un tutorial para comunicación bidireccional, para poder recibir datos desde el servidor, gracias nuevamente.

    • sebastian cipolat

      Hola,
      de momento no solamente este.
      Saludos

  • Pao

    Hola! muy buen tutorial. Me gustaría saber cómo poder enviar un archivo (una base sqlite o un archivo de texto) mediante sockets al servidor, dentro de una red local

  • Ohcan

    Gracias

  • Armand

    Hola muuy buen aporte no se si me puedas ayudar lo quiero hacer es q mediante un celular android lo use como microfono y el archivo de audio se almacene en mi computadora para luego convertilo en texto… en teoria tengo que usar streaming pero no se como… no se si me pudieras orientar o esta fumado lo q estoy haciendo

    gracias :D

    • http://sebastiancipolat.com.ar sebastiancipolat

      Hola, lo siento no te sabria guiar nunca hice algo asi.
      Saludos.

  • Gervasio Fernandez Ubeda

    Genial, gracias.

  • Gervasio Fernandez Ubeda

    Hola, lo estoy probando pero no sé qué direccion teclear en el dispositivo android cliente.
    También he probado desde el AVD de eclipse tecleando 127.0.0.1 pero se interrumpe la aplicación.
    ¿Dónde encuentro la IP que debo de teclear?.

    • http://sebastiancipolat.com.ar sebastiancipolat

      Hola,
      La direccion ip local la de la pc (no la 127.0.0.1) en donde esta el servidor con la app php.
      Para ver la ip depende del os q estes usando.

      Saludos

  • Gervasio Fernandez Ubeda

    Hola, no me deja compilar, me sale éste error

    [2014-01-22 13:05:21 - Dex Loader] Unable to execute dex: java.nio.BufferOverflowException. Check the Eclipse log for stack trace.
    [2014-01-22 13:05:21 - Socket-Client] Conversion to Dalvik format failed: Unable to execute dex: java.nio.BufferOverflowException. Check the Eclipse log for stack trace.

    • http://sebastiancipolat.com.ar sebastiancipolat

      Hola, es raro ese error no deberia dar problemas, proba bajando el codigo de nuevo.
      Saludos

  • Willo

    muy bueno funciona muy bien, ahora la pregunta como puedo hacer el proceso inverso tener un formulario en una web y que envie el dato a un telefono, para q active un sonido, prenda el flash o adquirir la longitud y latitud. porfa ayuda.

    • http://sebastiancipolat.com.ar sebastiancipolat

      Hola, eso es super complicado habria que crear alguna aplicacion web que identifique envie alguna notificacion del tipo push al telefono.

  • angel

    hola chicos monte el cliente y el servidor logro que el
    cliente se conecte pero no puedo enviar nada y el servidor me da el mostrado en
    la imagen como puedo solucionarlo? que estoy haciendo mal? soy nuevo en esto de
    programar con java agradecería la ayuda brindada

    • http://sebastiancipolat.com.ar sebastiancipolat

      Hola, si sos nuevo en java te recomiendo que no toques android todavia ya que se necesita un conocimiento avanzado sobre java.
      sobre el problema no te sabria, fijate si no esta dando ninguna excepcion en el logcat.

    • NIck Figueroa Mosquera

      Hola Angel a mi me pasó lo mismo, luego de buscar le encontré la solución eso sucede cuando creas la clase y le pones otro nombre, si miras dentro de src veras el nombre de tu clase, por lo que veo tu clase debe tener el mismo nombre que el del cliente en tu caso sería tin.Socket.socketv1, osea tanto tu cliente como tu servidor deben tener ese nombre de clase, y dentro van tus javas como servidor.java y mensaje_data.java

  • Willian Andress

    Hola estoy tratando de integrar una arduino UNO con mi android, y ya lo he logrado siguiento tu tuto que está super bueno, pero me gustaria saber cómo le puedo hacer para por ejemplo saber desde el smartphone si el bluetooth(módulo) de mi targeta arduino está prendida o apagada….???

    • http://sebastiancipolat.com.ar sebastiancipolat

      Hola, no te sabria decir.
      saludos

  • Willisney García Santos

    Saludos, aunque excelente post. Pero me pregunto como hago para implementar esto mismo usando la red de datos de mi proveedor de telefonía móvil ?

  • omar

    ace un momento ·
    Quisiera saber como configuras el celular para
    conectarlo con eclipse y te corra la aplicacion. ya
    que cuando hago todos los pasos y le pongo “run
    as, amdroid aplicaction” se abre el emulador y mi
    cel no responde. tengo android jelly bean

    • sebastian cipolat

      Hola, tenes que activar la depuracion usb eso lo haces desde configuracion en la opcion desarrollo.
      saludos

  • Jose Maria

    Buenas, muchas gracias por el tutorial, no consigo que conecte la app, alguien me podria ayudar? la ip que debo de meter es la del router???

  • Jose Maria

    Hola,buenas!! primero gracias por el tutorial!! A ver si alguien me puede ayudar, he hecho la app en eclipse adaptandola solo para que envie mensajes de texto al servidor pero no consigo que conecte, he metido mil ips y nada, alguien me echa una mano porfavor???? GRACIAS!

  • Andy

    Hola que tal, ando haciendo un proyecto para graduarme de un chat pero quiero que muchos clientes se conecten al mismo servidor, Ya lo hize con peticiones en php pero va muyy lento me gustaria hacerlo son sockets que vaya rapido. Espero y me entiendan, Muchas gracia

  • Aldair

    Hola Sebastian buen Tuto…

    Quisiera saber cual es la direccion IP del Servidor o como saberla?? te agradeceria mucho..!! Saludos

  • NIck Figueroa Mosquera

    Buen código Sebastian ya lo he probado y funciona :D , Quería preguntarte porque en tu código no ha sido necesario Threads o AsyncTask, en otros programas de creación de cliente servidor recomiendan colocarlos para que puedan comunicarse en red pero en tu código veo que no haz usando ningun
    runOnUiThread(new Runnable() {
    @Override
    public void run() {
    O similar, podrias explicarle porque y sin embargo funciona a la perfección?

    Gracias
    Nícolas