domingo, 27 de octubre de 2013

El poder de Big Data (I)


Todos y cada uno de nosotros ha escuchado alguna vez la frase “La información es poder” ¡y vaya que lo es! 














Actualmente el acelerado crecimiento de la tecnología propicia la generación de grandes volúmenes de datos, se estima que unos 2,5 zettabytes de datos se generaron sólo en 2012, y las tendencias indican que el volumen de los datos de negocio crecerá significativamente cada año.

Big Data no es sólo un término que está de moda, sino que es un campo prometedor en el área de análisis de la información, en esta entrada y las siguientes, espero poder ofrecerles una visión más amplia de lo que es, sus objetivos, las áreas donde ya se utiliza y los alcances que éste sector de las TIC´s pretende alcanzar.

¿Qué es Big Data?

Big Data es una cantidad enorme de datos estructurados y no estructurados, que provienen de fuentes internas y externas de información, cuyo objetivo es la entrega de información con fines predictivos en un tiempo reducido.

Sus orígenes se encuentran en la Inteligencia de negocios o “Business Intelligence”, este concepto tampoco es nuevo, en 1958 Hans Peter Luhn científico de IBM describió en su artículo “A Business Intelligence System” algunas de las premisas sobre las que gira este tipo de sistemas aún en nuestros días:

  • El volumen de la información crece a un ritmo acelerado y esto se debe en gran parte al nuevo alcance de las actividades humanas, el aumento de la especialización y sobre todo a   las empresas que intentan formar parte del fenómeno de la globalización.
  • La toma de decisiones ya no es una necesidad exclusiva de los altos mandos sino también de los mandos medios.
  • Los datos necesitan ser distribuidos rápidamente a los lugares adecuados y proporcionar información sobre la demanda.
  • Cada vez son más los usuarios que deben tener acceso a los datos para generar información de acuerdo a sus necesidades.

Cabe mencionar que aunque fue Peter Luhn el primero en poner el tema sobre la mesa, fue hasta 1989 que Howard Dresner un investigador de Gartner Group popularizó el término Businness Intelligence para indicar el conjunto de conceptos y métodos para mejorar la toma de decisiones de negocio mediante el uso de sistema de apoyo basado en los hechos.

Otro concepto que surge en los 80´s y se encuentra estrechamente ligado a la Inteligencia de negocios es Data Warehouse o “Almacén de datos” es una base de datos corporativa que se caracteriza por integrar y depurar información de una o más fuentes, para procesarla permitiendo su análisis desde infinidad de perspectivas y con grandes velocidades de respuesta.  Algunas de las características que debe cumplir un Data Warehouse son:
  • Integrado: Los datos almacenados en el Data Warehouse deben integrarse en una estructura consistente.
  • Temático: Se organiza por temas para facilitar su acceso y entendimiento por parte de los usuarios finales.
  • Histórico: Los datos siempre reflejan el estado de la actividad del negocio en el momento presente.
  • No volátil: El almacén de información de un Data Warehouse existe para ser leído, y no modificado.


Hasta aquí he abordado las bases de lo que hoy en día conocemos como Big Data, en la próxima entrada hablaré más sobre el tema, especialmente sobre los avances que existen en este sector y quienes van a la cabeza en esta carrera por la información.

sábado, 12 de octubre de 2013

Un poco de PNY

Ya tiene como un mes que adquirí un nuevo equipo para satisfacer mi necesidad GAMER de mejores gráficos, y claro, ¡más poder!

Con mi nuevo equipo tome la decisión de comprar mi primer disco en estado sólido, y creo que no exagero en comentar que fue la mejor decisión que pude haber tomado en ese momento, mi equipo para gaming con GTX760 2GB DDR5, 12 gb en RAM de 1600 mhz y un core i5 de 3ghz… ¡vuela!, como no tienen idea. Y la culpa de esto la tiene ese disco solido PNY de 120 Gb 2.5´´SATA 6Gb/s., aunque cabe aclarar que no he comentado todas las especificaciones de mi equipo, pero esta entrada no es sobre las especificaciones, es más para conocer la marca PNY, ya que para antes de comprar mi equipo la marca era totalmente indiferente para mí, a pesar que ya tiene algo de tiempo en el mercado, pero bueno, a lo que vamos señores.




PNY

Fue fundada en 1985, PNY Technologies, Inc. con casa matriz en Parsippany, NJ
Ubicación:100 Jefferson Rd, Parsippany-Troy Hills, NJ, Estados Unidos

PNY es uno de los principales fabricantes y proveedores de tarjetas aceleradoras gráficas para el usuario doméstico y tarjetas gráficas profesionales para la empresa, así como de módulos de actualización de memoria, soportes Flash y periféricos Flash. Entre los clientes de PNY se encuentran numerosos fabricantes de equipamiento original (OEM) de la lista Fortune 500, que utilizan sus productos en un gran número de aplicaciones que van desde equipamiento informático de gama alta hasta infraestructuras de Internet y telecomunicaciones, pasando por PCs de sobremesa, portátiles y servidores de red. La línea de productos minoristas de la empresa abarca productos utilizados en un número creciente de dispositivos de electrónica de consumo, como ordenadores personales, cámaras digitales y dispositivos PDA. Los productos PNY ya están disponibles en los principales comercios minoristas, a través de tiendas por correo y por Internet, en revendedores de valor añadido y en canales de distribución de EE.UU. y Europa.

A lo largo de su historia, PNY ha sabido redefinir su estrategia ofreciendo líneas de productos segmentados dirigidas a grupos específicos de amantes de las tecnologías TIC, incluyendo el sector joven, los programadores informáticos, los diseñadores de sistemas, los animadores digitales, los ingenieros, los conferenciantes y profesionales de la presentación y los artistas gráficos. Al ofrecer líneas de productos fabricados a medida para estos grupos específicos de consumidores, PNY se ha labrado un nombre de marca propio y reconocido, y ha establecido relaciones significativas tanto con distribuidores como con consumidores. Por otro lado, la empresa apoya a sus distribuidores y clientes con asistencia técnica por teléfono gratuita. Como resultado, PNY ha sabido ganarse un lugar destacado entre las empresas más respetadas del sector.
PNY CEO - Gadi Cohen


Se dedica al desarrollo de:

·         Tarjetas memoria Flash
·         Unidad Flash USB
·         Auriculares
·         Discos de estado sólido
·         Módulos de memoria RAM
·         Tarjetas gráficas Geforce
·         Gráficas Quadro Professional
·         Cables HDMI
·         Quadro Plex
·         Unidades de almacenamiento para energía móvil 

Algunos datos extra de PNY

  • PNY genera aproximadamente $100 millones de dolares en ingresos y emplea a cerca de 500 personas.
  • La venta y distribución se realiza directamente a los minoristas y los vendedores de la línea.
  •  Desde 1994, la compañía ha mantenido las normas ISO 9001. 
  • PNY trabaja con Fortune 500 para fabricantes como Sony, Epson, HP, Hynix, IBM, Toshiba, etc.

  • Este líder de la tecnología también trabaja en estrecha colaboración con los socios estratégicos como National Geographic, HP, New Jersey Nets,  White House News Photographers Association y Polaroid.



sábado, 5 de octubre de 2013

CONSEJOS PARA CUIDAR LA BATERÍA DE TU CELULAR



Texto sacado de xataka movil -> http://www.xatakamovil.com/
Incluso los grandes de la tecnología lo dicen: las baterías han evolucionado muy poco en comparación con otros componentes electrónicos, y eso hace que uno de los principales factores para valorar un dispositivo sea el comportamiento de estos apartados.
Los desarrolladores de dispositivos móviles lo han intentado todo. Hoy en día buena parte del volumen de los smartphones y tablets se lo llevan las baterías, pero el interés por grosores ínfimos y pesos reducidos también limita la capacidad y autonomía de las baterías. Si los fabricantes hacen lo que pueden con lo que tienen, ¿cómo podemos ayudar nosotros?

Lo cierto es que al menos podemos “mimar” nuestras baterías. La tecnología de Ión Litio presente actualmente en el mercado sigue sin tener sustituta clara, así que hasta que llegue un salto cualitativo en este terreno, os proponemos seguir 
algunas reglas de oro para mantener la autonomía de vuestras baterías al máximo.
1.    La recarga de las baterías es lo que reduce la vida de estos componentes. Normalmente las baterías en smartphones pueden llegar a los 700 o 1000 ciclos de carga y mantener tras esos ciclos el 90% de su capacidad.
2.    La carga de 0 a 100% se considera un ciclo de carga. Cargar 5 veces del 80% al 100% equivale a un ciclo de carga.
3.    Dejar tu teléfono conectado en el cargador si el dispositivo ya está cargado puede suponer la reducción de la autonomía de la batería, aunque esto es cada vez menos frecuente puesto que los nuevos dispositivos desconectan por sí solos el circuito de carga hasta que la carga de la batería baja a aproximadamente el 95%. Normalmente el problema surge si dejáis conectado vuestro dispositivo móvil más de 24 horas.
4.    Las baterías de Ión Litio no necesitan ningún acondicionamiento.
5.    La mayoría de baterías de Ión-Litio llegan con una carga del 40-50% ya que este es el nivel óptimo para almacenar una batería de este tipo durante largos periodos.
6.    Una carga lenta mantiene la capacidad global de la batería mejor que una carga rápida. Por esa razón, por ejemplo, el HTC One no tiene la tecnología Quick Charge integrada en los nuevos Snapdragon 600 habilitada.
7.    Los smartphones y los tablets (y la mayoría de dispositivos electrónicos) tienen circuitos de carga que solo captan cierto amperaje sin importar el número de amperios que ofrece el cargador. Usar un cargador de 3,1 A (común en tablets) no logra incrementar de forma significativa lavelocidad a la que se carga tu smartphone. La mayoría de los smartphones usan entre 0,8 y 1,2 A en las regargas, y todo lo demás sobra, ya que el smartphone sólo coge lo que necesita.
8.    Guardar una batería de Ión Litio con una carga del 0% es realmente malo para la conservación de su autonomía. Descargarla hasta el 0% no es recomendable normalmente, pero hacerlo alguna que otra vez no la dañará ni reducirá su capacidad.
9.    Recargar tu batería del 0% al 100% no hará que tu batería tenga más autonomía. Sin embargo, puede resetear las estadísticas de los niveles de batería de forma que estos datos ofrezcan información más precisa sobre el nivel de carga de la batería en cada momento.
10.  Cargar del 95% al 100% suele llevar bastante tiempo porque se debe hacer una carga casi mediante goteo. Intentar hacer este proceso puede reducir la capacidad general de la batería en su vida útil, pero normalmente no lo suficiente como para importarnos. Este problema suele ser más importante en otros escenarios, como el de los coches eléctricos.
El consejo es claro: dejar el teléfono cargando por la noche, y cogerlo por la mañana cuando nos levantemos. Ese ciclo de carga será normalmente el adecuado para la mayoría de usuarios. Lo ideal es cargar la batería si tenemos la posibilidad cuando esta baje del 80% si podemos. Y si baja del 40%, tratar de hacerlo sí o sí. No pasa nada por estar recargando continuamente la batería, el problema es que se descargue del todo y pasen un par de semanas.

martes, 6 de agosto de 2013

Fin de #CPMX4


Después de la larga y ajetreada semana de Campus Party Mexico 2013 regresamos a nuestras actividades cotidianas, el trabajo, la escuela, la vagancia o lo que hagamos.

Este evento con mas de 500 horas de contenido dentro de sus 8 escenarios, ademas de las actividades principales e invitados especiales que se ubicaron en el escenario principal y sus mas de 8,000 personas.


Si te gusto esta edición de Campus Party y quieres repetir la experiencia no olvides estar atento a los avisos que seguramente estarás recibiendo o si te perdiste esta oportunidad para asistir aun tienes la oportunidad de participar en la experiencia campusera en su próxima edición de 2014 en Zapopan, Jalisco.


domingo, 21 de julio de 2013

NUEVO NEXUS 7



Después de tantas filtraciones de nuevos dispositivos próximos a estrenarse, creo que ya algunos de nosotros están generando un pequeño ahorro para apartar uno de estos gadgets.
Pero para que sepan cual elegir, les tengo algunas características que deben considerar de estos.

Características nuevo NEXUS 7 – DATOS NO CONFIRMADOS.

-Seguirá con el mismo tamaño de 7 pulgadas
-Cámara delantera de 5 Mp
-Cámara frontal de 1,2 Mp
-Android 4.3 Jelly Bean
-Salida de video a 1080p a través de microUSB
-Un posible Qualcomm Snapdragon S4 Pro  
  - CPU Krait: Hasta 1,7 GHz Dual o Quad 
  - Graficos:   Adreno 320
-Memoria RAM de 2 GB ó 4GB
-Resolución 1920 x 1200
-Led de notificaciones
-Modelos disponibles de 16 GB y 32 GB


Saldrá a la venta el 31 de julio con precios de 229 dólares/euros para los 16GB y 269 dólares/euros para 32GB.

Y les dejo un pequeño video, para que vean el potencial que podría tener el nuevo nexus 7 con un procesador S4 pro:


lunes, 15 de julio de 2013

Los Mundos de Coraline.

 

Película producida y dirigida por Henry Selick basada en la novela de Neil Gaiman. Es la historia de Coraline Jones quien comienza su pubertad y se muda a una nueva casa compartida llamada Palacio rosa, donde encuentra una pequeña puerta que conduce a una realidad alterna, habitada por versiones de los inquilinos con la peculiaridad de tener botones en lugar de ojos pero mucho más atentos y complacientes con ella a modo que lo disfruta hasta que su "otra madre" le propone quedarse para siempre.



En la presente entrada y posteriores se pretende brindar un corto análisis del contenido, y acá pueden checar la ficha técnica http://www.filmaffinity.com/es/film629275.html Se puede apreciar una gran calidad siendo la primer película en el trabajo de animación stop-motion rodada en 3-D y HD.

En la historia se puede notar un complejo preedipico, siendo la relación objetal con la madre muy concreta; Coraline posee un sentido de la realidad distorsionado después de todo sus deseos están expresados oníricamente, ya que las visitas son por la noche o cuando no hay nadie más que ella, por tal motivo expresa lo que desea, inventa una historia donde obtiene lo prohibido y lo cual es gozoso para todos en un principio.

Coraline se muda una casa dividida en departamentos gris y aburrida así expresado en la película, los padres se encuentran ocupados y poco disponibles para escucharla, pero es a su madre a quien le reprocha y espera que la escuche, que la deje salir, que le cocine, que le dé lo que le pida y es desde esta falta estructural existente en la relación madre-hija, que Coraline descubre esté mundo secreto detrás de la puerta con llave en un mundo ideal pero que encierra una trampa que torna de lo conocido por ella, de lo que le es familiar a lo siniestro, que es lo opuesto a lo propio de la casa, familiar, intimo, no extraño, dócil, confidencial, lo que recuerda el hogar, que también remite  su opuesto la parte siniestra que estando destinada a permanecer oculta, secreta, ha salido a la luz; es decir lo ha hecho consciente.

Dentro de la película se muestra un mundo detrás de la puerta secreta, lo inconsciente de forma oculta que muestra lo terrible de la madre, un aspecto narcisista que la hace lucir como bruja que muestra como el deseo del otro puede tornarse siniestro. Freud sitúa como primer motivo de sentimiento ominoso el miedo a ser despojado de los ojos, esté miedo es una angustia infantil que a menudo persiste en algunos adultos, tan comunes en lo cotidiano y que confirman también que esté miedo no es más que un sustituto de la angustia de castración. En este punto, nos pone como ejemplo a Edipo con su particular forma de castración al enterarse de la verdad se arranca los ojos.

En la película se muestra la falta de limites entre realidad y fantasía que nos lleva de nuevo a su mundo infantil. Instala algo del primer despertar sexual, donde el sujeto despertó de "un sueño: ser el falo que completa al Otro". Coraline de lo familiar ingresa a lo siniestro para transformar su mirada, no es botones como objeto de goce del Otro, sino para poder mirar con nuevos ojos: los propios.

Esto es solo un breve análisis desde una perspectiva psicológica y solo se puntualizan algunas características, ya que existe una gran cantidad de simbolismo en el filme, de hecho existe la comparación con Alicia de Lewis Carroll, por la creación de una realidad alterna y lo onírico. Como suele pasar con las novelas llevadas a cine hay varias diferencias, y como es costumbre se le recomienda leer, y así usted mismo generara su propia opinión.Cabe mencionar que es perteneciente al genero de terror y no es recomendable para niños pequeños.







domingo, 14 de julio de 2013

Guía de supervivencia: Campus Party México (2ª parte)


La semana pasada hablamos sobre las etapas de registro e ingreso a Campus Party, en esta ocasión les traemos una lista sobre lo que deben y no deben llevar… Sí, sabemos que diversas comunidades han dado a conocer su checklist, pero esto no nos desanimó a publicar una más, pues es nuestro punto de vista. Así que,  ¡Comencemos!

EQUIPO INDISPENSABLE
  • Laptop.
  •  Audífonos: No invadas el espacio auditivo de los demás.
  •  Multicontacto.
  •  Router.
  •  Cable de red: No mayor a un metro, será bajo tu propio riesgo llevar cables más extensos.
  •  Dispositivos de almacenamiento: USB, Disco duro externo.
  •  Cámara fotográfica: ¡Hay que documentar todo!

EQUIPO OPCIONAL
  •  PC escritorio.
  • Consolas y videojuegos.
  • CD´s, DVD´s para quemar.
  • Bocinas o equipo de sonido.
  • Extensión.
  • Switch.
  • Accespoint.
  • Cámara de video.
  • Pantallas.

PARA TU SEGURIDAD Y ACAMPADO
  • Candado para laptop.
  • Candado para camping.
  • Candado para tu maleta.
  • Linterna: Es indispensable por la noche, en especial en el área de acampado.
  • Alimentos secos.
  • Agua embotellada.
  • Artículos de aseo personal: Desodorante, shampoo, jabón, cepillo dental, dentífrico, gel, etc, etc.
  • Ropa: 4 mudas de ropa mínimo.
  • Cobijas: Recuerden que es en Santa Fe ¡hace mucho frio! Se vale llevar cobija-humana.
  • Almohada.
  • Balones o pelotas deportivas
  • Dinero: Lo mas que puedas
  • Medicamento: Si tomas algún tratamiento ¡No lo olvides!  Además incluye: medicina para gripe, tos, dolor de garganta, resfriado.
  • Condones (Por si las dudas).  

EVITA LLEVAR
  • Artículos pesados.
  • Herramientas (pinzas, tijeras, desarmadores, cautin, etc., etc.)
  • Objetos punzocortantes/ Armas blancas.
  • Botellas de vidrio.
  • Objetos flamables (para hacer fogatas o similares).
  • Bebidas alcohólicas.
  • Drogas.

EXCEPCIONES

Si estás interesado en el modding o el arduino y necesitas llevar herramientas como: protoboards, PLC´s, PIC´s, mecanismos, robots, cautin, soldadura y otros accesorios electrónicos; envía un correo a CRM (crm@campus-party.com.mx) para su aprobación y previo registro.

RECOMENDACIONES


  • En Campus Party el principal medio de comunicación es Twitter, así que activa tu cuenta y sigue las cuentas oficiales de los principales ponentes, así estarás al tanto de las dinámicas y sorpresas que tengan preparadas.
  • No olvides llevar bolsas de plástico para tu basura. La higiene es vital y habla bien de tú persona, no tires ni dejes basura en ningún lugar, acumula la basura en una bolsa y después depositala en los contenedores correspondientes.


Los colaboradores de RAIDON ONE son campuseros con experiencia, así que en la última entrega les hablaremos de cómo es el ambiente en Campus Party, dónde abastecerse de provisiones, etc., en los comentarios díganos que quieren saber y resolveremos todas sus dudas en nuestro siguiente post.

No olviden que la comunidad UNAM estará presente en #CPMx4, síganos en Facebook y Twitter:


Nuevamente gracias a José Méndez por su apoyo en la elaboración de esta entrada.


SOCKETS CON IntentService ( ANDROID Y PC )

Especificaciones:

Hardware: LG L9
Versión: ANDROID ICE CREAM 4.0.4
Framework: Eclipse Java EE IDE for Web Developers.
Versión: Juno Service Release 2

Bueno, para comenzar este pequeño tutorial daré algunos aspectos técnicos que son básicos para entender este tipo de aplicaciones.

Servicios:
Un servicio es un componente de aplicación que puede realizar operaciones de larga duración dentro de un subproceso y no proporciona una interfaz de usuarios. Otro componente de la aplicación se puede iniciar desde un servicio y continuará funcionando dentro un segundo plano, incluso si el usuario cambia a otra aplicación.
Nuestro servicio puede tener básicamente dos formas:

·         Started
Un servicio se “empieza” cuando un componente de la aplicación (por ejemplo, una actividad) se inicia llamando startService(). Una vez iniciado, un servicio puede ejecutarse en un segundo plano de forma indefinida, incluso si el componente de se inició, se destruye. Por lo general, un servicio que se inicia realiza solo operación y no devuelve un resultado a la persona que llama. Por ejemplo, puede descargar o cargar un archivo en la red. Una vez realizada la operación, el servicio debe pararse.

·         Bound
Un servicio es “bound” cuando un componente de aplicación se una a ella llamado blindService(). Un servicio consolidado ofrece una interfaz cliente-servidor que permite a los componentes interactuar con el servicio, enviar solicitudes, obtener resultados, e incluso hacerlo a través de los procesos de comunicación entre procesos (IPC). Un servicio funciona mientras otro componente de la aplicación es obligado a ello. Múltiples componentes pueden unirse al servicio, pero todos ellos llegan dirimir, cuando el servicio se destruye.

Aunque generalmente se trabaja con estos servicios por separado, el servicio puede funcionar en ambos sentidos, se pueden iniciar(ejecutar indefinidamente) y permitir la unión. Es simplemente cuestión de si se implementa un par de métodos de devolución de llamada:

Para permitir el inicio de los componentes.
Para permitir la unión.

IntentServices:
Es una clase base para generar un servicio que maneja peticiones asíncronas ( expresadas como intenciones) a petición.
Los clientes envían peticiones a través de llamadas startService(intención), el servicio se pone en marcha cuando se necesita, se encarga de cada intención, y todo esto se genera en un subproceso de trabajo y se detiene a sí mismo cuando se acaba el trabajo.
Este “proceso en cola  de trabajo” patrón se utiliza comúnmente para no sobrecargar las tareas dentro del hilo principal dentro la aplicación. En este caso existe la clase intentService para simplificar este patrón y cuidar los procesos. Para usarlo, se extiende intentService y se implementa onHandleIntent(Intención). IntentService recibirá las intenciones, iniciando el subproceso de trabajo, y deteniendo el servicio según corresponda.

LA APLICACIÓN

EN JAVA:

clase MyServerSocket.java:

package sockets;

import java.io.DataOutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Random;

/**
 *
 * @author kamehy
 */
public class MyServerSocket {

final int PUERTO=5001;
ServerSocket sc;
Socket so;
DataOutputStream salida;
String mensajeRecibido;

   public void MyServerSocket(){
       
   }
        
    public void initServer() {        
        try {
            boolean listening = true;
            sc = new ServerSocket(PUERTO);/* crea socket servidor que escuchara en puerto 5000*/
            so = new Socket();    
            
            int limite=10;
            Random r = new Random();
            
            System.out.println("Iniciando server por puerto " + PUERTO);
            while (listening)
               new ThreadClienteSc(sc.accept(),r.nextInt(),PUERTO).run();
            
            System.out.println("Cerrando server");
            sc.close();//Aqui se cierra la conexión con el cliente
        } catch (Exception e) {
            System.out.println("Error: " + e.getMessage() + " " + e.toString());
        }
    }
}

clase Sockets,java:

package sockets;

import java.net.ServerSocket;
import sockets.MyServerSocket;

/**
 *
 * @author kamehy
 */
public class Sockets {

    private static MyServerSocket myserverSocket;
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        myserverSocket = new MyServerSocket();        
        myserverSocket.initServer();
    }
}

clase ThreadsClienteSc:

package sockets;

import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.Socket;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author kamehy
 */
public class ThreadClienteSc implements Runnable{

    private int id;
    private Socket so;
    private DataOutputStream salida;
    private String mensajeRecibido;
    private int puerto;
    
    public ThreadClienteSc(Socket socket,int Id,int puerto){       
       this.id = id;            
       this.puerto = puerto;
       this.so = socket;
    }
    
    @Override
    public void run(){
        try {
                System.out.println("cliente lanzado:" + id + " puerto:" + puerto);                
                BufferedReader entrada;
                
                entrada = new BufferedReader(new InputStreamReader(so.getInputStream()));
                mensajeRecibido = entrada.readLine();                                
                
                System.out.println("recibido:" + mensajeRecibido);
                
                salida = new DataOutputStream(so.getOutputStream());
                System.out.println("Confirmando conexion al cliente....");                
                salida.writeUTF("Se recibio tu mensaje.n Terminando conexion..." + id + "\n");                
                
                
                System.out.println("Cerrando conexión..." + id);                
        } catch (IOException ex) {
            System.out.println("error hilo cliente :" + id + ex.toString());
        }

    }
    
}

Al correar la aplicación deberá aparecer la siguiente pantalla:

EN ANDROID:

Diseño aplicación:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >

    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentRight="true"
        android:layout_marginTop="21dp"
        android:text="Conexión" />

</RelativeLayout>

clase MainActivity.java:

package com.example.sockets;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button btnSync = (Button) findViewById(R.id.button1);
btnSync.setOnClickListener(new OnClickListener() {

            public void onClick(View view) {
            
              System.out.println("iniciando conexion al server.... pba01"); 
              
              Intent cliente = new Intent (MainActivity.this, Cliente.class);
              
              startService(cliente);
            
           }

       });
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}

}

clase Cliente.java:
package com.example.sockets;

import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.InputStreamReader;
import java.net.Socket;

import android.app.IntentService;
import android.content.Intent;

public class Cliente extends IntentService  {
Socket sc;
public Cliente(){
super("IntentServiceOperacion");
}
protected void onHandleIntent(Intent intent){
        try {
            BufferedReader entrada;
            System.out.println("Conectar por puerto:"  );

            //En esta parte entra en CMD y escribe ipconfig para encontrar la ip de tú PC           
            //la ip siempre deberá de ser STRING

            sc = new Socket("X.X.X.X" , 5001 );                 
            
            sc.setSoTimeout(10000);
            
            if(sc.isConnected()){
                System.out.println("Confirmando conexion al server....");            
                DataOutputStream mensaje = new DataOutputStream(sc.getOutputStream());
                mensaje.writeUTF("ID : 1 | android\n");           

                entrada = new BufferedReader(new InputStreamReader(sc.getInputStream()));

                String mensajeRecibido = entrada.readLine();
                System.out.println(mensajeRecibido);     
                
                 
                System.out.println("fin conexion al server....");
                sc.close();
                                
            }    
                       
        } catch (Exception ex) {
            System.out.println("Error al conectar cliente" + ex.toString());
        }finally{
           if(sc!=null){
                try {
                    sc.close();
                } catch (Exception ex) {
                    System.out.println("Error al cerrar el socket");
                }
           }
        }  
}   
}
clase AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.sockets"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="17" />
 <uses-permission 
    android:name="android.permission.ACCESS_NETWORK_STATE" /> 

<uses-permission 
    android:name="android.permission.ACCESS_WIFI_STATE" /> 

<uses-permission 
    android:name="android.permission.INTERNET" /> 

<uses-permission 
    android:name="android.permission.CHANGE_WIFI_MULTICAST_STATE" /> 
    
    
    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        
        <service android:name="com.example.sockets.Cliente"></service>        
        <activity
            android:name="com.example.sockets.MainActivity"
            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>

Al correar la aplicación dentro de un dispositivo android deberá aparecer la siguiente pantalla:


Y al presionar la pantalla deberá de aparecer lo siguiente dentro del aplicativo en java, el cual debimos de ejecutar antes de seleccionar el boton conexión en el dispositivo android:



Nota: Si presentan un error con el puerto 5001, tendrán que desactivar su FIREWALL para que se pueda generar la conexión.

Por: Alejandro Bautista Mancilla y Jhonatan Becerril Bautista


Fuentes: