Red en Android LSUB, GYSC, URJC

Documentos relacionados
Ejercicio 18. Configuración de Widgets en Android. Android Con Java. Ejercicio 18. Configuración de Widgets en Android. Curso de Android con Java

Programación Android. Rafael Morón Abad

CODIGO PROYECTO: AppPixelproServicioWeb Proyecto Android - Servicio Web

Examen parcial Convocatoria de junio de 2005 FUNDAMENTOS DE LA PROGRAMACIÓN

Servicios LSUB, GYSC, URJC

ALMACENAMIENTOS DE DATOS EN ANDROID CON SQLITE

EJEMPLOS PROGRAMACIÓN SOCKET - JAVA

Arquitecturas cliente/servidor

Universidad de Cantabria

Federico Peinado

Desarrollo de Aplicaciones Distribuidas. Sockets. Daniel Avellaneda

Sockets en Java. La Creatividad proviene de un conflicto de ideas. Uso de Sockets

Índice. Herramientas de desarrollo. Historia Qué es Android? Arquitectura del sistema. Componentes Android Modelos de Negocio

Sockets. Introducción. Las redes de computadoras permiten al usuario. Curso Propedéutico Maestría en Ciencias de la Computación BUAP

Sockets. Los sockets son un mecanismo de comunicación entre procesos que se utiliza en Internet.

Crear un Splash-Screen

Aplicaciones Cliente-Servidor Con Datagramas

Desarrollo de Aplicaciones para Android

Java: comunicación en Internet. Modem. Satelite UMTS W-LAN. Láser. Fibra óptica. Conceptos básicos

Especialista Universitario en Desarrollo de Aplicaciones para Dispositivos Móviles. Plataforma Android. Sesión 1: introducción a Android

Cliente HTTP : Usando Telnet

Multienhebrado en Java Un toque de sincronización Transporte en Java Ejemplo conjunto

Programación Android. Rafael Morón Abad

Tema 3: COMUNICACIÓN ENTRE PROCESOS

Sockets en C# Bueno, por ultimo apuntar que trabajaremos en modo consola, que aprticularmente me gusta más.

MANUAL TÉCNICO DEL PROXY UTN

Juan Pavón Mestras Dep. Sistemas Informáticos y Programación Universidad Complutense de Madrid.

Gines Hinojosa Marisol López López Marcela Pamela Pérez Cruz Juan Carlos Pérez Valencia Ubaldo

Acceso del telnet/ssh de la configuración al dispositivo con los VRF

1.- FUNDAMENTOS FUNCIONAMIENTO GENÉRICO JAVA SOCKETS Creación de Streams de Entrada...7

Luego lleve el cliente a otra máquina y ejecute desde ahí usando el nombre de la máquina del servidor.

Programación Android. Rafael Morón Abad

Sockets. Sockets. 1 Introducción

UNIVERSIDADE DA CORUÑA Departamento de Tecnoloxías da Información e as Comunicacións LABORATORIO DE RC: TUTORIAL DE SOCKETS EN JAVA

Programación Android. Rafael Morón Abad

Capítulo 5. Programación de aplicaciones de red

Ataques a Servidores Web

Cliente/Servidor en Java

1. Qué es App Inventor 2? 2. Requisitos para utilizar AI2

PROTOCOLOS DE RED SMTP

Unidad 3. PrimerProyecto. Nuestra primera aplicacio n Android

Programación Android. Rafael Morón Abad

Para esto, he desarrollado una aplicación en Visual Studio con tres proyectos, como se presenta en la siguiente ilustración:

CLASE SOCKET. 1. Crear un nuevo socket usando un constructor de la clase. 2. El socket trata de conectarse al host remoto.

Concurrencia en Android LSUB, GYSC, URJC

Manejo de las comunicaciones de red en Android

Unidad Didáctica 2. Elementos básicos del lenguaje Java Tipos, declaraciones, expresiones y asignaciones

Sockets en Java. Prof. Wílmer Pereira Universidad Simón Bolívar

Comunicación entre procesos: sockets tcp. Jorge Iván Meza Martínez

Las clases Java Socket y ServerSocket

GUIA DE PRACTICA (EX Aula opcional) LED RGB controlado por Arduino desde un dispositivo mo vil con SO Android 2.2 o superior.

HOJA DE EJERCICIOS 5 PROGRAMACIÓN CON EXCEPCIONES EN JAVA

Programación Avanzada. Juan Manuel Fernández. Curso 2011 Ejemplo de uso de sockets desde aplicaciones visuales. Usan un hilo en banco.

Tutorial de uso de Android Asynchronous HTTP Client (LOOPJ) Programación en Internet

Importar y exportar aplicaciones Para importar proyectos de Android a Android studio

Tema 5 Corrección y Robustez Excepciones en Java

Clase 23 FTP. Telnet. Ejemplos Tema 6.- Nivel de aplicación en Internet

Aplicaciones con Servicio Web

PROGRAMACION I Archivos directos

Examen de Redes - Primer Parcial - ETSIA 26 de Enero de 2006

Direcciones IP y puertos

El servicio de echo con sockets

Introducción a Java LSUB. 30 de enero de 2013 GSYC

Plugin para NetBeans que realiza migración de una base de datos postgresql a couchdb.

Comunicacion en Java. Alejandro Escobar

PROGRAMACIÓN EN JAVA. { una línea para definir, crear o ejecutar ; }

Construcciones del Lenguaje Java

Procedimiento para conectar la puerta AUX de un cisco a la CONSOLA de otro CISCO. Diagrama de conexión:

Instrucción para el acceso remoto (VPN)

Tareas en segundo plano AsyncTask Thread

Ejercicios - Introducción a Android

Patricio Olivares. 25 de abril de 2017

Código Fuente. Creamos en C:\ una carpeta para ubicar el código fuente del servidor. En mi caso, he creado una carpeta denominada rmi4

Comunicación entre procesos: sockets udp. Jorge Iván Meza Martínez

Manual de Configuración de Router Cisco 871W

LABORATORIO DE RC PRÁCTICA 2: IMPLEMENTACIÓN DE UN CLIENTE Y SERVIDOR DE

Transcripción:

Red en Android LSUB, GYSC, URJC

Red en Android Igual que en Java Algunas peculiaridades con el interfaz (WIFI lock) Se puede emular

Cliente public void hola(view button){ int time = Toast.LENGTH_SHORT; Toast msg = Toast.makeText(this, "hola", time); msg.show(); Thread c = new Thread(){ @Override public void run() { Socket s; OutputStream o; o = null; try{ s = new Socket("10.0.2.2", 2000); OutputStream o = s.getoutputstream(); byte buf[] = "hola hola".getbytes("utf-8"); o.write(buf, 0, buf.length); }

Cliente!! } catch (ConnectException e){ System.out.println("connection refused" + e); } catch(unknownhostexception e){ System.out.println("cannot connect to host " + e); } catch(ioexception e){ System.out.println("IO exception" + e); } finally { if o!= null o.close() } } } }; c.start();

Permisos Como para muchos recursos hay que pedir permiso al usuario Se declaran los permisos que se necesitan en el manifest

Permisos (cliente o servidor) <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.client" android:versioncode="1" android:versionname="1.0" >! <uses-sdk android:minsdkversion="8" android:targetsdkversion="17" /> <uses-permission android:name="android.permission.internet" /> <application android:allowbackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/apptheme" > <activity android:name="com.example.client.mainactivity" android:label="@string/app_name" >...

! Servidor try{ ServerSocket s = new ServerSocket(1234); OutputStream o; o = null; while(true){ Socket sin = s.accept(); if(sin == null) break; o = sin.getoutputstream(); byte buf[] = "hola hola".getbytes("utf-8"); o.write(buf, 0, buf.length); } s.close(); } catch (ConnectException e){ System.out.println("connection refused" + e); } catch(unknownhostexception e){ System.out.println("cannot connect to host " + e); } catch(ioexception e){ System.out.println("IO exception" + e); } finally { if o!= null o.close() }

Información de Interfaces La clase WifiInfo (ojo, en el emulador no funciona). Necesita el permiso:! <uses-permission android:name="android.permission.access_wifi_state" />

Información de Interfaces WifiManager wifimanager = (WifiManager) getsystemservice(wifi_service); WifiInfo wifiinfo = wifimanager.getconnectioninfo(); int ipaddress = wifiinfo.getipaddress(); String ip = String.format("%d.%d.%d.%d", ipaddress & 0xff, ipaddress>>8 & 0xff, ipaddress>>16 & 0xff, ipaddress>>24 & 0xff); int time = Toast.LENGTH_SHORT; Toast msg = Toast.makeText(this, "hola soy: " + ip, time); msg.show();

WIFI lock En cuanto deja de haber actividad se apaga la WIFI (aunque haya conexiones abiertas) Si no quiero que se me de problemas puedo hacer que se quede encendida Si el usuario la apaga, se apaga

WIFI lock Mejor por cuenta de referencias Así, creo uno sólo para mi App y me despreocupo

WIFI lock WifiManager wm = (WifiManager) context.getsystemservice(context.wifi_service); wifilock = wm.createwifilock(wifimanager.wifi_mode_full, MyWifiLock ); // Poner cuenta de referencias wifilock.setreferencecounted(true); // Coger el cierre wifilock.acquire(); // Usar la red // Coger el cierre wifilock.release(); Log.i( Mi_app, "WiFi Lock released! );

WIFI lock Tengo que pedir el permiso:! <uses-permission android:name="android.permission.wake_lock" />

3G Detrás de NAT (en muchas WIFIs también) Lo mejor es usar un servidor para comunicarse

Emular la Red Todo lo que hay que saber: http://developer.android.com/tools/devices/ emulator.html#emulatornetworking

Depuración Usar telnet o nc para depurar (se puede redireccionar la entrada y usar una fifo creada con mkfifo) Así nos fiamos de uno de los lados mientras depuramos el otro

Emular la Red Puerto de control

Emular la red Simulador Gateway 10.0.2.15 10.0.2.1 1234 325 Host Simulador 10.0.2.15 Gateway 10.0.2.1 127.0.0.1 == 10.0.2.2 Las direcciones que ven los emuladores son siempre las mismas

Emular la red Redireccionar el puerto del NAT (de entrada al dispositivo) $ telnet localhost 5554 Trying ::1... telnet: connect to address ::1: Connection refused Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. Android Console: type 'help' for a list of commands OK redir add tcp:325:1234 OK!

Emular la red (servidor)! try{ ServerSocket s = new ServerSocket(1234); while(true){ Socket sin = s.accept(); if(sin == null) break; OutputStream o = sin.getoutputstream(); byte buf[] = "hola hola".getbytes("utf-8"); o.write(buf, 0, buf.length); o.close(); } s.close(); } catch (ConnectException e){ System.out.println("connection refused" + e); } catch(unknownhostexception e){ System.out.println("cannot connect to host " + e); } catch(ioexception e){ System.out.println("IO exception" + e); }

Depuración (servidor:android, cliente: telnet) $ telnet localhost 1234 Trying ::1... telnet: connect to address ::1: Connection refused Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. hola hola Connection closed by foreign host. $

Depuración: (cliente:android, servidor: nc) Es cómodo poner un netcat de servidor para probar Ej: cliente en el dispositivo, conecta a 10.0.2.2:2000 en la shell ejecuto: $ nc -l 2000

Depuración! s = new Socket("10.0.2.2", 2000); OutputStream o = s.getoutputstream(); byte buf[] = "hola hola\n".getbytes("utf-8"); o.write(buf, 0, buf.length); o.close();

Depuración $ nc -l 2000 hola hola $

Automatización: adb Para hacerle cosas al emulador automáticamente desde la shell Por ejemplo levantar el interfaz de red y cambiar a 3G, cambiar el forward de puertos, etc. http://developer.android.com/tools/help/ adb.html#move

WIFI direct Conectar dos teléfonos directamente Sin access point Sin bluetooth (protocolo roto en muchos teléfonos y no llega muy lejos)