Carrera: Desarrollo de software Semestre 05. Programa de la asignatura: Programación orientada a objetos III. Unidad 3. Programación en red

Tamaño: px
Comenzar la demostración a partir de la página:

Download "Carrera: Desarrollo de software Semestre 05. Programa de la asignatura: Programación orientada a objetos III. Unidad 3. Programación en red"

Transcripción

1 Carrera: Desarrollo de software Semestre 05 Programa de la asignatura: Programación orientada a objetos III Clave: Universidad Abierta y a Distancia de México 1

2 Índice PRESENTACIÓN DE LA UNIDAD... 3 PROPÓSITOS DE LA UNIDAD... 3 COMPETENCIA ESPECÍFICA... 3 TEMARIO DE LA UNIDAD... 3 TEMA 3.1. MODELO CLIENTE-SERVIDOR... 4 TEMA 3.2. STREAMS... 5 CIERRE DE LA UNIDAD PARA SABER MÁS FUENTES DE CONSULTA

3 Presentación de la unidad Hoy en día el uso de las computadoras requiere un inevitable intercambio de información con otros equipos, sea para revisar correos electrónicos, chatear, etc. Para poder realizar este intercambio de información es necesario que se realicen programas que permitan dicho intercambio, con este fin se cuenta con sockets que son los elementos que permiten el paso de información entre equipos diferentes conectados a una misma red. En esta tercera unidad de la materia Programación orientada a objetos III, analizarás el modo de trabajo del modelo cliente-servidor, así como el funcionamiento de los streams; al final se unirán los temas previos para realizar el manejo de sockets para crear programas que trabajen en red, de manera que se puedan conectar varias computadoras para intercambiar información. Cabe señalar que la, representa el cierre de la asignatura Programación orientada a objetos III, por lo tanto, es necesario que recuperes los contenidos de unidades anteriores y de la Programación orientadas a objetos I y II, pues, ello te servirá para avanzar en cada uno de los logros que componen a la competencia específica de la unidad. Propósitos de la unidad En esta unidad lograrás: Identificar el modelo de comunicación cliente servidor. Distinguir el funcionamiento y la estructura de los streams. Crear programas en red mediante el uso de sockets. Competencia específica Generar programas en red para el intercambio de información entre un cliente y un servidor, mediante la manipulación de sockets. Temario de la unidad 3. Programación en red 3.1. Modelo cliente-servidor Cliente Servidor 3.2. Streams De entrada De salida 3

4 3.3. Sockets Apertura Cierre 3. Programación en red Hoy en día, la inmensa mayoría de las computadoras que existen intercambian información unas con otras; para intercambiar información, ya sea personal, comercial, o sólo por convivencia, las personas se encuentran en constante comunicación y, en dicha actividad, las computadoras son de gran ayuda, para permitir una instantánea comunicación sin importar las distancias. En el presente tema revisaremos lo que es la programación en red, con lo que aprenderás a realizar programas que realicen un intercambio de información entre computadoras. Tema 3.1. Modelo cliente-servidor En la actualidad el intercambio de información entre distintos equipos de cómputo se ha vuelto muy importante, ya que una computadora aislada difícilmente será de alta utilidad para un usuario. Para lograr la comunicación entre computadoras es importante realizar un intercambio de información entre éstas, de manera tal que debemos contar con una computadora que envié una petición de información (cliente) a otra, que al recibir la petición le responda con la información solicitada (servidor), tal como se muestra en la siguiente imagen. De esta manera se logra tener un flujo de datos entre ambos equipos, con lo que se logra el intercambio de información. Figura. Modelo cliente-servidor Para lograr realizar esto, Java ha desarrollado clases que permiten la manipulación de los puertos de las computadoras que permitan esta comunicación en red entre los diferentes equipos. 4

5 Típicamente un cliente se reconoce como tal por ser quien comienza el intercambio de información al realizar una petición al servidor, mientras que el servidor espera a que los clientes le estén solicitando información para responderles. Para que conozcas más a fondo el modelo de intercambio de información cliente-servidor revisa el siguiente material: En el texto de Niemeyer, P. (2000, p. 258) se cuenta con una breve introducción a la programación en red, donde encontrarás la descripción de lo que es un cliente y lo que es un servidor, recordándonos que la principal diferencia es que el cliente puede crear sockets para iniciar la comunicación, mientras que el servidor está a la espera de peticiones. Por su parte Hervás, C. (2004 p. 1) nos muestra una descripción de lo que es el modelo cliente-servidor, donde se indica que los clientes inician las conexiones a un puerto conocido del servidor siempre que esté disponible un puerto del cliente para realizar el intercambio de información. Ahora bien, sólo resta apuntar que para poder realizar un programa que trabaje en red deberás ajustarte al modelo cliente-servidor para el intercambio de información; por lo que, como es de esperarse, se deberán crear dos programas, uno que funcionará en el cliente y otro en el servidor. Más adelante, cuando veamos el tema de sockets, veremos un ejemplo para crear un programa cliente y uno servidor, por el momento lo importante es que comprendas este modelo de comunicación. Para concluir este tema, realiza la Actividad 1. Cliente-servidor, que se presenta en el documento: Actividades de la unidad 3, donde identificarás el modelo de comunicación cliente-servidor, así como identificar el papel que juega cada uno para la comunicación en red. Tema 3.2. Streams Para continuar con el tema, se revisará como al pretender mostrar u obtener alguna información de un lugar externo, es necesario que el programa cree un flujo de datos para poder manejarlos (algo parecido al canal de comunicación que se abre para conectarse a una base de datos). Por lo tanto, hay un flujo de entrada que recibe los datos desde el exterior del programa y un flujo de salida que envía los datos hacia el ordenador u otro dispositivo de almacenamiento. Los streams tal como menciona Abián (2004, p.18) son tuberías o canales de comunicaciones: tienen dos extremos entre los cuales fluyen los datos de manera continua. En esta misma obra puede verse en Abián (2004, p. 101) una clara descripción sobre lo que son los streams y la distinción entre los flujos que toman datos desde una fuente externa 5

6 hacia el programa (stream de entrada) y por otra parte están los flujos que mueven datos desde un programa hacía algún receptor externo (stream de salida). En Flujos de datos en Java de FIC (2007, p ) encontrarás la descripción de los procesos para la lectura y escritura de datos mediante el manejo de streams. Los cuales pueden ilustrarse mediante las siguientes imágenes, donde en un equipo de origen, mediante un stream se envía un flujo de información a un programa, que se encuentra alojado en otro equipo diferente al origen y se puede regresar mediante otro stream la información de respuesta. Figura. Flujos de datos en Java. Recuperado de: FIC (2007). Para el manejo flujos de entrada/salida, Java nos proporciona dos tipos de flujos posibles, los de byte y los de caracteres. Los cuales se describen a continuación: Flujo de bytes (ByteStreams): Nos proporciona un medio adecuado para el manejo de entradas y salidas de bytes y su uso lógicamente está orientado a la lectura y escritura de datos binarios (Suarez, 2001). Flujo de caracteres (CharacterStreams): Proporciona un medio adecuado para el manejo de entradas y salidas de caracteres (Suarez, 2001). En Flujos de datos en Java de FIC (2007, p. 36), encontrarás la descripción de los procesos para la lectura y escritura de datos mediante el manejo de streams. 6

7 Para conocer más a fondo las clases que controlan la entrada y salida de datos de un programa revisa los siguientes textos 1 : En la siguiente liga de Oracle (2012), encontrarás la descripción del uso de flujos de bytes, los cuales son utilizados para cuando la entrada/salida de datos consta de datos representados mediante bytes. Ahí encontrarás su descripción, así como la explicación de su uso, además se presenta también el código mediante el cual se crea el stream y se lee su contenido. Por lo tanto ingresa a: En la liga de Oracle (2012) encontrarás la descripción del uso de flujos basados en caracteres, en este material encontrarás una explicación de dichos streams; así mismo, verás la explicación de la sintaxis para crearlos y también para leerlos. Así pues, ingresa a: Para concluir este tema, realiza la Actividad 2. Programa con streams, que se presenta en el documento: Actividades de la Unidad 3, donde distinguirás el funcionamiento y la estructura de los streams para realizar programas en red. Tema 3.3. Sockets Para crear un puente entre dos equipos que pretenden conectarse se requiere de los siguientes elementos: los sockets, que son básicamente cada uno de los extremos (en cada equipo/computadora) que generan la comunicación entre dos programas que se estarán comunicando en red. Por su parte los sockets requieren de conocerla dirección IP del equipo con el que se entablará la comunicación, además del puerto al que se conectará, pues bien los puertos son las conexiones físicas que tiene un equipo para conectarse a la red. Como se mencionó en el tema de Modelo cliente-servidor, el cliente es quien comienza la comunicación realizando una petición al servidor, por lo que el cliente ya debe conocer el nombre de host de la máquina en que se ejecuta el servidor (IP) y el número de puerto en el que escucha el servidor. Para realizar una solicitud de conexión, el cliente intenta reunirse con el servidor en la máquina del servidor y el puerto. El cliente también debe identificarse ante el servidor. Tal como se muestra en las siguientes imágenes, primero el cliente envía una petición al servidor y, en la segunda imagen, se muestra como el servidor le responde al cliente, en ambos casos la comunicación se establece en un punto particular, el puerto. 1 Para profundizar en el tema y cumplir con las tareas de la unidad, ingresa a la sección de materiales de apoyo de la unidad. Consulta los textos de la unidad que se agregan en formato PDF 7

8 Figura. Comunicación cliente-servidor De tal manera que un socket se comunica al equipo al que se quiere conectar mediante un puerto. El ciclo de vida de un canal de comunicación (socket), está determinado por tres fases, Díaz (2011) las enlista de la siguiente manera: Creación y apertura del socket. Lectura y/o escritura, recepción y/o envío de datos por el socket. Destrucción, cierre del socket. Ahora, revisa Programación con Sockets en FIC (2007, p ), donde encontrarás la descripción del proceso de conexión entre un cliente y un servidor mediante sockets. Revisando este material lograrás comprender el proceso de la conexión. Para identificar las clases necesarias para la programación en red revisa Martínez (2000, p. 10), ahí encontrarás el nombre y descripción de las principales clases requeridas para la creación de programas que funcionen en red y logren intercambiar información entre diferentes equipos. En la siguiente imagen puedes ver el esquema de conexión mediante sockets y el flujo de streams para que se realicen un programa en red que intercambie información entre equipos. 8

9 Figura. Conexión mediante sockets. Recuperada de (Díaz, 2011, p. 7) Para complementar la información revisa The Java Tutorials, la lección All About Sockets, en Oracle (2012), donde encontrarás el tema de sockets completo, desde las explicaciones teóricas respecto al tema, así como ejemplos básicos para la creación de programas en red, resulta muy conveniente que revises el material completo, pues Oracle es dueño del lenguaje Java, por lo que sus manuales contienen las referencias más precisas. Por lo tanto, Ingresa a la liga: A continuación se te presentan los bloques de código que muestran la creación de un programa en red, verás dos clases: una que se encargará de la aplicación que maneja el servidor, la otra clase es la encargada del cliente. Analiza detalladamente los códigos para que comprendas su aplicación, todo el código se encuentra comentado para que sea más fácil de digerirlo, se sugiere también que ejecutes el código presentado para que analices los resultados. Pon mucha atención en los comentarios para que identifiques fácilmente el funcionamiento de la sintaxis presentada. Ejemplo de código 1. Clase que controla el servidor import java.io.datainputstream; import java.io.dataoutputstream; import java.io.inputstream; import java.io.outputstream; import java.net.serversocket; import java.net.socket; import javax.swing.joptionpane; /** * Esta clase representa el programa servidor. */ public class Aplicacion_Servidor extends javax.swing.jframe /** * Creates new form Aplicacion_Servidor */ public Aplicacion_Servidor() 9

10 initcomponents(); SuppressWarnings("unchecked") // <editor-fold defaultstate="collapsed" desc="generated Code"> private void initcomponents() /* En esta sección se tienen los elementos que compondrán la apariencia gráfica de la aplicación, declaraciones y acomodos en la pantalla */ txtpuertosocket = new javax.swing.jtextfield(); lblpuertosocket = new javax.swing.jlabel(); btnabrirpuerto = new javax.swing.jbutton(); btncerrarpuerto = new javax.swing.jbutton(); jpanel1 = new javax.swing.jpanel(); jscrollpane1 = new javax.swing.jscrollpane(); txtadatosentrantes = new javax.swing.jtextarea(); setdefaultcloseoperation(javax.swing.windowconstants.exit_on_close); settitle("comunicacion con Sockets - Servidor"); txtpuertosocket.settext("12345"); lblpuertosocket.sethorizontalalignment(javax.swing.swingconstants.right); lblpuertosocket.settext("puerto:"); btnabrirpuerto.settext("abrir"); btnabrirpuerto.addactionlistener(new java.awt.event.actionlistener() public void actionperformed(java.awt.event.actionevent evt) btnabrirpuertoactionperformed(evt); ); btncerrarpuerto.settext("cerrar"); btncerrarpuerto.setenabled(false); btncerrarpuerto.addactionlistener(new java.awt.event.actionlistener() public void actionperformed(java.awt.event.actionevent evt) btncerrarpuertoactionperformed(evt); ); jpanel1.setborder(javax.swing.borderfactory.createtitledborder("datos Recibidos")); jpanel1.setenabled(false); jpanel1.setlayout(new java.awt.borderlayout()); txtadatosentrantes.setcolumns(20); txtadatosentrantes.seteditable(false); txtadatosentrantes.setrows(5); txtadatosentrantes.setenabled(false); jscrollpane1.setviewportview(txtadatosentrantes); jpanel1.add(jscrollpane1, java.awt.borderlayout.center); javax.swing.grouplayout layout = new javax.swing.grouplayout(getcontentpane()); getcontentpane().setlayout(layout); layout.sethorizontalgroup( layout.createparallelgroup(javax.swing.grouplayout.alignment.leading).addgroup(layout.createsequentialgroup().addcontainergap().addgroup(layout.createparallelgroup(javax.swing.grouplayout.alignment.leading).addgroup(layout.createsequentialgroup().addcomponent(lblpuertosocket, javax.swing.grouplayout.preferred_size, 74, javax.swing.grouplayout.preferred_size).addpreferredgap(javax.swing.layoutstyle.componentplacement.related).addcomponent(txtpuertosocket, javax.swing.grouplayout.preferred_size, 111, 10

11 javax.swing.grouplayout.preferred_size).addpreferredgap(javax.swing.layoutstyle.componentplacement.related).addcomponent(btnabrirpuerto).addpreferredgap(javax.swing.layoutstyle.componentplacement.related).addcomponent(btncerrarpuerto).addgap(0, 40, Short.MAX_VALUE)).addComponent(jPanel1, javax.swing.grouplayout.default_size, javax.swing.grouplayout.default_size, Short.MAX_VALUE)).addContainerGap()) ); layout.linksize(javax.swing.swingconstants.horizontal, new java.awt.component[] btnabrirpuerto, btncerrarpuerto); layout.setverticalgroup( layout.createparallelgroup(javax.swing.grouplayout.alignment.leading).addgroup(layout.createsequentialgroup().addcontainergap().addgroup(layout.createparallelgroup( javax.swing.grouplayout.alignment.baseline).addcomponent(txtpuertosocket, javax.swing.grouplayout.preferred_size, javax.swing.grouplayout.default_size, javax.swing.grouplayout.preferred_size).addcomponent(lblpuertosocket).addcomponent(btnabrirpuerto).addcomponent(btncerrarpuerto)).addpreferredgap( javax.swing.layoutstyle.componentplacement.unrelated).addcomponent(jpanel1, javax.swing.grouplayout.default_size, 162, Short.MAX_VALUE).addContainerGap()) ); java.awt.dimension screensize = java.awt.toolkit.getdefaulttoolkit().getscreensize(); setbounds((screensize.width-403)/2, (screensize.height-253)/2, 403, 253); // </editor-fold> /* Aquí se termina la creación de la apariencia gráfica */ /* El boton de Abrir Puerto será el que mande a llamar al método abrirsocket */ private void btnabrirpuertoactionperformed(java.awt.event.actionevent evt) // TODO add your handling code here: abrirsocket(); /* El boto Cerrar Puerto manda a llamar al método cerrarsocket */ private void btncerrarpuertoactionperformed(java.awt.event.actionevent evt) // TODO add your handling code here: cerrarsocket(); /** * El método principal invoca a que se ejecute la aplicación del servidor */ */ public static void main(string args[]) java.awt.eventqueue.invokelater(new Runnable() ); public void run() new Aplicacion_Servidor().setVisible(true); /* A continuación se presenta el método de abrirsocket */ public void abrirsocket() String msg = null; 11

12 int puerto = 0; try //Establecemos el puerto a través del cual se abrirá el socket. puerto = Integer.valueOf(txtPuertoSocket.getText().trim()); //Se asigna ese Puerto al socket creado serversocket = new ServerSocket(puerto); //Habilitamos y deshabilitamos controles de la interfaz de usuario //para evitar un funcionamiento indeseado. habilitarcontrolesaperturadesocket(false); //Notificamos al usuario que se ha creado un socket. msg ="Socket creado exitosamente en el puerto " + puerto + "." + "\n\nel programa quedará bloqueado hasta que se establezca " + "alguna conexión con un cliente."; JOptionPane.showMessageDialog(this, msg, "Socket creado.", JOptionPane.INFORMATION_MESSAGE); //Esperamos a que un cliente se conecte. cliente = serversocket.accept(); //Obtenemos los objetos para poder leer y escribir a través //del socket entrada = cliente.getinputstream(); salida = cliente.getoutputstream(); lector = new DataInputStream(entrada); escritor = new DataOutputStream(salida); leerdatosdelcliente(); //Si el usuario captura un número de puerto incorrecto se captura el error y se le notifica al usuario. catch (NumberFormatException nfe) msg = "El numero de puerto debe ser un numero entero mayor a 0 " + "y menor a "; JOptionPane.showMessageDialog(this, msg, "Numero de puerto incorrecto", JOptionPane.ERROR_MESSAGE); nfe.printstacktrace(); //Si el usuario intenta acceder a un numero de puerto no disponible se captura el error y se le notifica al usuario. catch (Exception e) msg = "Error al intentar abrir socket en el puerto " + puerto + "\n\nprobablemente el puerto esté en uso o el firewall " + "de su equipo impidio su apertura."; JOptionPane.showMessageDialog(this, msg, "Error", JOptionPane.ERROR_MESSAGE); //Termina el método se abrirsocket // Inicia el método de cerrarsocket public void cerrarsocket() String msg = null; try leyendo = false; // Se está en espera de recibir comunicación por parte del cliente. if (cliente!= null) //Con esto se cierra la conexión con el cliente. cliente.close(); //Con esto se cierra el socket servidor, ya no atendemos más conexiones. serversocket.close(); 12

13 cliente = null; serversocket = null; habilitarcontrolesaperturadesocket(true); /* En el caso de que no se pueda cerrar el socket se captura la excepción y se cierra el sistema */ catch (Exception e) msg = "Error al intentar cerrar el socket.\n\n" + "El sistema se cerrara después de este cuadro de dialogo."; JOptionPane.showMessageDialog(this, msg, "Error", JOptionPane.ERROR_MESSAGE); e.printstacktrace(); /* El siguiente es el método para en caso de abrir el socket se habiliten los componentes gráficos o se deshabiliten según sea el estado del socket */ public void habilitarcontrolesaperturadesocket(boolean value) //Habilitamos los controles para la apertura del socket lblpuertosocket.setenabled(value); txtpuertosocket.setenabled(value); btnabrirpuerto.setenabled(value); //Deshabilitamos los controles de recepcion de datos y cierre btncerrarpuerto.setenabled(!value); txtadatosentrantes.setenabled(!value); jpanel1.setenabled(!value); /* El siguiente método es para leer los datos que el cliente envía hacia el servidor */ public void leerdatosdelcliente() Thread t = null; /*Creamos un objeto para leer datos del cliente indefinidamente a través de un hilo. La interface Runnable solamente declara una función miembro denominada run, que han de definir las clases que implementen este interface */ Runnable r = new Runnable() /* Se declara entonces la función run, que implementa la interface Runnable*/ Override public void run() if (leyendo) return; leyendo = true; while (leyendo) /*Mientras se está leyendo se toman los datos que se están introduciendo, en la caja de texto txtadatosentrantes*/ try txtadatosentrantes.settext(txtadatosentrantes.gettext() + "\n" + lector.readutf()); if (txtadatosentrantes.gettext().length() > 0) txtadatosentrantes.setcaretposition( txtadatosentrantes.gettext().length() - 1); catch (Exception e) e.printstacktrace(); 13

14 ; t = new Thread(r); //Se inicializa el hilo de lectura t.start(); // Variables declaration - do not modify private javax.swing.jbutton btnabrirpuerto; private javax.swing.jbutton btncerrarpuerto; private javax.swing.jpanel jpanel1; private javax.swing.jscrollpane jscrollpane1; private javax.swing.jlabel lblpuertosocket; private javax.swing.jtextfield txtpuertosocket; private javax.swing.jtextarea txtadatosentrantes; // End of variables declaration //Socket Servidor que aceptara conexiones de clientes ServerSocket serversocket; //Objeto que se comunicará con los clientes para enviar y recibir datos. Socket cliente; //Objetos que permitiran leer y escribir flujos de bits través del socket. InputStream entrada; OutputStream salida; //Objetos que permitiran leer valores de algun tipo desde el socket. DataInputStream lector; DataOutputStream escritor; //Esta variable sirve para mantener o cerrar el ciclo de lectura de datos //desde el cliente boolean leyendo; Ejemplo de código 2. Clase que controla el cliente import java.io.datainputstream; import java.io.dataoutputstream; import java.io.inputstream; import java.io.outputstream; import java.net.serversocket; import java.net.socket; import javax.swing.joptionpane; /** * Esta clase representa el programa cliente. */ public class Aplicacion_Cliente extends javax.swing.jframe /** * Creates new form Aplicacion_Servidor */ public Aplicacion_Cliente() initcomponents(); SuppressWarnings("unchecked") 14

15 // <editor-fold defaultstate="collapsed" desc="generated Code"> private void initcomponents() /* En esta sección se tienen los elementos que compondrán la apariencia grafica de la aplicación, declaraciones y acomodos en la pantalla */ txtpuertosocket = new javax.swing.jtextfield(); lblpuertosocket = new javax.swing.jlabel(); btnabrirpuerto = new javax.swing.jbutton(); btncerrarpuerto = new javax.swing.jbutton(); lblip = new javax.swing.jlabel(); txtip = new javax.swing.jtextfield(); txtdatos = new javax.swing.jtextfield(); btnenviardatos = new javax.swing.jbutton(); setdefaultcloseoperation(javax.swing.windowconstants.exit_on_close); settitle("comunicacion con Sockets - Cliente"); txtpuertosocket.settext("12345"); lblpuertosocket.sethorizontalalignment(javax.swing.swingconstants.right); lblpuertosocket.settext("puerto:"); btnabrirpuerto.settext("abrir"); btnabrirpuerto.addactionlistener(new java.awt.event.actionlistener() public void actionperformed(java.awt.event.actionevent evt) btnabrirpuertoactionperformed(evt); ); btncerrarpuerto.settext("cerrar"); btncerrarpuerto.setenabled(false); lblip.sethorizontalalignment(javax.swing.swingconstants.right); lblip.settext("ip:"); txtip.settext(" "); txtdatos.addkeylistener(new java.awt.event.keyadapter() public void keyreleased(java.awt.event.keyevent evt) txtdatoskeyreleased(evt); ); btnenviardatos.settext("enviar"); btnenviardatos.addactionlistener(new java.awt.event.actionlistener() public void actionperformed(java.awt.event.actionevent evt) btnenviardatosactionperformed(evt); ); javax.swing.grouplayout layout = new javax.swing.grouplayout(getcontentpane()); getcontentpane().setlayout(layout); layout.sethorizontalgroup( layout.createparallelgroup(javax.swing.grouplayout.alignment.leading).addgroup(layout.createsequentialgroup().addcontainergap().addgroup(layout.createparallelgroup( 15

16 javax.swing.grouplayout.alignment.leading).addgroup(layout.createsequentialgroup().addgroup(layout.createparallelgroup( javax.swing.grouplayout.alignment.leading, false).addcomponent(lblpuertosocket, javax.swing.grouplayout.default_size, 74, Short.MAX_VALUE).addComponent(lblIp, javax.swing.grouplayout.default_size, javax.swing.grouplayout.default_size, Short.MAX_VALUE)).addPreferredGap( javax.swing.layoutstyle.componentplacement.related).addgroup(layout.createparallelgroup( javax.swing.grouplayout.alignment.leading, false).addgroup(layout.createsequentialgroup().addcomponent(txtpuertosocket, javax.swing.grouplayout.preferred_size, 111, javax.swing.grouplayout.preferred_size).addpreferredgap( javax.swing.layoutstyle.componentplacement.related).addcomponent(btnabrirpuerto).addpreferredgap(javax.swing.layoutstyle.componentplacement.related).addcomponent(btncerrarpuerto)).addcomponent(txtip))).addgroup(layout.createsequentialgroup().addcomponent(txtdatos, javax.swing.grouplayout.preferred_size, 258, javax.swing.grouplayout.preferred_size) );.addpreferredgap(javax.swing.layoutstyle.componentplacement.related).addcomponent(btnenviardatos))).addcontainergap(49, Short.MAX_VALUE)) layout.linksize(javax.swing.swingconstants.horizontal, new 16

17 java.awt.component[] btnabrirpuerto, btncerrarpuerto); layout.setverticalgroup( layout.createparallelgroup(javax.swing.grouplayout.alignment.leading).addgroup(layout.createsequentialgroup().addcontainergap(javax.swing.grouplayout.default_size, Short.MAX_VALUE).addGroup(layout.createParallelGroup( javax.swing.grouplayout.alignment.baseline).addcomponent(lblip).addcomponent(txtip, javax.swing.grouplayout.preferred_size, javax.swing.grouplayout.default_size, javax.swing.grouplayout.preferred_size)).addpreferredgap(javax.swing.layoutstyle.componentplacement.related).addgroup(layout.createparallelgroup( javax.swing.grouplayout.alignment.baseline).addcomponent(txtpuertosocket, javax.swing.grouplayout.preferred_size, javax.swing.grouplayout.default_size, javax.swing.grouplayout.preferred_size).addcomponent(lblpuertosocket).addcomponent(btnabrirpuerto).addcomponent(btncerrarpuerto)).addpreferredgap(javax.swing.layoutstyle.componentplacement.unrelated).addgroup(layout.createparallelgroup( javax.swing.grouplayout.alignment.baseline).addcomponent(txtdatos, javax.swing.grouplayout.preferred_size, javax.swing.grouplayout.default_size, ); javax.swing.grouplayout.preferred_size).addcomponent(btnenviardatos)).addgap(179, 179, 179)) java.awt.dimension screensize = java.awt.toolkit.getdefaulttoolkit().getscreensize(); setbounds((screensize.width-402)/2, (screensize.height-145)/2, 402, 145); // </editor-fold> /* Aquí se termina la creación de la apariencia gráfica */ /* El boton de Abrir Puerto será el que mande a llamar al método abrirconexionconelservidor */ private void btnabrirpuertoactionperformed(java.awt.event.actionevent evt) // TODO add your handling code here: 17

18 abrirconexionconelservidor(); /* El botón de Enviar Datos será el que mande a llamar al método enviardatos */ private void btnenviardatosactionperformed(java.awt.event.actionevent evt) // TODO add your handling code here: enviardatos(); /* Se tiene un manejo de evento sobre txtdatos para estar escuchando cada una de las teclas que se oprimen */ private void txtdatoskeyreleased(java.awt.event.keyevent evt) // TODO add your handling code here: if (evt.getkeycode() == evt.vk_enter) enviardatos(); /** * El método principal invoca a que se ejecute la aplicación del cliente */ */ public static void main(string args[]) java.awt.eventqueue.invokelater(new Runnable() ); Override public void run() new Aplicacion_Cliente().setVisible(true); /* A continuación se presenta el método de abrirconexionconelservidor para estar enviando los datos desde el cliente*/ public void abrirconexionconelservidor() String msg = null; String ip = null; int puerto = 0; try //Establecemos la ip del servidor ip = txtip.gettext().trim(); //Establecemos el puerto a través del cual se abrirá el socket. puerto = Integer.valueOf(txtPuertoSocket.getText().trim()); //Establecemos la conexión con el servidor cliente = new Socket(ip, puerto); //Habilitamos y deshabilitamos controles de la interfaz de usuario //para evitar un funcionamiento indeseado. habilitarcontrolesaperturadesocket(false); //Notificamos al usuario que se ha creado un socket. msg ="Conexión realizada con el servidor exitosamente."; JOptionPane.showMessageDialog(this, msg, "Socket creado.", JOptionPane.INFORMATION_MESSAGE); //Obtenemos los objetos para poder leer y escribir a través //del socket entrada = cliente.getinputstream(); 18

19 salida = cliente.getoutputstream(); lector = new DataInputStream(entrada); escritor = new DataOutputStream(salida); catch (NumberFormatException nfe) //Notificamos al usuario que se ha creado un socket msg = "El numero de puerto debe ser un numero entero mayor a 0 " + "y menor a "; JOptionPane.showMessageDialog(this, msg, "Numero de puerto incorrecto", JOptionPane.ERROR_MESSAGE); nfe.printstacktrace(); catch (Exception e) //Si el usuario intenta acceder a un numero de puerto no disponible se captura el error y se le notifica al usuario. msg = "Error al intentar abrir socket.\n" + "Ip: " + txtip.gettext() + "\n"+ "Puerto: " + puerto + "\n\nprobablemente el puerto esté en uso o el firewall " + "de su equipo o del servidor impidio su apertura."; JOptionPane.showMessageDialog(this, msg, "Error", JOptionPane.ERROR_MESSAGE); // Se tiene el método para cerrar el socket previamente abierto. public void cerrarsocket() String msg = null; try leyendo = false; if (cliente!= null) //Con esto se cierra la conexión con el servidor cliente.close(); cliente = null; habilitarcontrolesaperturadesocket(true); catch (Exception e) //Si el usuario intenta cerrar un socket no disponible se captura el error y se le notifica al usuario. msg = "Error al intentar cerrar el socket.\n\n" + "El sistema se cerrara después de este cuadro de dialogo."; JOptionPane.showMessageDialog(this, msg, "Error", JOptionPane.ERROR_MESSAGE); e.printstacktrace(); 19

20 /* El siguiente es el método para en caso de entablar comunicación se habiliten los componentes gráficos o se deshabiliten según sea el estado de la conexión */ public void habilitarcontrolesaperturadesocket(boolean value) //Habilitamos los controles para la apertura del socket lblip.setenabled(value); txtip.setenabled(value); lblpuertosocket.setenabled(value); txtpuertosocket.setenabled(value); btnabrirpuerto.setenabled(value); //Deshabilitamos los controles de recepcion de datos y cierre btncerrarpuerto.setenabled(!value); txtdatos.setenabled(!value); btnenviardatos.setenabled(!value); /*A continuación se presenta el método que envía datos, el cual primero los obtiene de txtdatos y después los envía mediante un DataOutputStream */ public void enviardatos() try escritor.writeutf(txtdatos.gettext()); catch (Exception e) e.printstacktrace(); // Variables declaration - do not modify private javax.swing.jbutton btnabrirpuerto; private javax.swing.jbutton btncerrarpuerto; private javax.swing.jbutton btnenviardatos; private javax.swing.jlabel lblip; private javax.swing.jlabel lblpuertosocket; private javax.swing.jtextfield txtdatos; private javax.swing.jtextfield txtip; private javax.swing.jtextfield txtpuertosocket; // End of variables declaration //Objeto que se comunicará con el servidor para enviarle datos. Socket cliente; //Objetos que permitirán leer y escribir flujos de bits través del socket. InputStream entrada; OutputStream salida; //Objetos que permitirán leer valores de algún tipo desde el socket. DataInputStream lector; DataOutputStream escritor; //Esta variable sirve para mantener o cerrar el ciclo de lectura de datos //desde el cliente boolean leyendo; 20

21 Autorreflexiones Además de enviar tu trabajo de la Evidencia de aprendizaje, es importante que desarrolles las preguntas que tu Docente en línea(a) presente, a partir de ellas, debes elaborar tu Autorreflexión en un archivo de texto llamado DPO3_U3_ATR_XXYZ. Posteriormente envía tu archivo mediante la herramienta Autorreflexiones. Cierre de la unidad Has concluido la tercera unidad de la asignatura. A lo largo de esta unidad revisaste los principios del modelo de comunicaciones Cliente Servidor, de esta misma manera abordaste el tema de Streams, que como sabes se requieren para el intercambio de información y, en esta unidad, pudiste utilizarlos para que ese intercambio de información se realice entre diferentes computadoras. Por último, revisaste la manipulación de sockets para realizar una conexión entre diferentes equipos que permita el intercambio de datos mediante estos. Al concluir esta unidad, concluyes también la materia Programación Orientada a Objetos III, en ella te adentraste en conceptos avanzados de la programación, iniciaste en la unidad uno con el manejo de archivos que te permitan almacenar información o extraerla, en la unidad dos abordaste la programación paralela mediante threads y, por último, en esta unidad generaste programas en red que intercambien información entre diferentes computadoras. Con la aplicación de estos temas ampliarás la gama de desarrollos de software en los que podrás participar. Es aconsejable que revises nuevamente la unidad en caso de que los temas que se acaban de mencionar no te sean familiares o no los recuerdes, de no ser este tu caso, Felicidades! concluiste con la asignatura Programación Orientada a Objetos III. Para saber más Para que puedas ejecutar los programas que se te presentan, así como las actividades es importante que instales un IDE en tu computadora, se recomienda NetBeans, puedes descargarlo de forma gratuita de la siguiente liga: Es recomendable que pruebes los códigos que se presentan en los ejemplos que se encuentran en cada fuente de consulta mencionada. 21

22 Fuentes de consulta Abián, M. (2004) Java y las redes. [Documento en formato PDF] Díaz, F. (2011) SOCKETS EN JAVA. [Documento en formato PDF] FIC (2007). Laboratorio de Redes de Comunicaciones. España: Universidad de la Coruña. Tomado de: Hervás, C. (2004). Modelo de cliente-servidor en Java. España: Universidad de Cordoba. Tomado de Martinez, P. (2000). Sockets en Java. España: Universidad de Alicante. Tomado de: Niemeyer, P (2000). Learning Java. E. U.: O Reilly. Oracle (2012). The JAVA Tutorials. Estados Unidos de América: Oracle Suarez, L. (2001) El paquete java.io. Javahispano. Disponible en: Universidad tecnológica nacional (2001). Conceptos básicos sobre Redes. Argentina: Instituto Tecnológico de Buenos Aires. Recopilado en: 22

Instituto Politécnico Nacional Escuela Superior de Cómputo

Instituto Politécnico Nacional Escuela Superior de Cómputo Instituto Politécnico Nacional Escuela Superior de Cómputo DESARROLLO DE APLICACCIONES PARA LA WEB II Alumno: Toledo Goméz Israel Hernández Hernández Alex Héctor Martínez Ríos Israel Arellano Ceniceros

Más detalles

Universidad centroamericana

Universidad centroamericana Universidad centroamericana Facultad de Ciencia, Tecnología y Ambiente. Implementación de Aplicaciones Orientadas a Objetos. Docente: Lic. Armando López. Patrón de Diseño:. Integrantes: Maritza Rodríguez

Más detalles

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

Programación Avanzada. Juan Manuel Fernández. Curso 2011 Ejemplo de uso de sockets desde aplicaciones visuales. Usan un hilo en banco. Programación Avanzada. Juan Manuel Fernández. Curso 2011 Ejemplo de uso de sockets desde aplicaciones visuales. Usan un hilo en banco. El software que se muestra es un ejemplo sin pulir donde se muestra

Más detalles

Desarrollo de Aplicaciones Distribuidas. Sockets. Daniel Avellaneda

Desarrollo de Aplicaciones Distribuidas. Sockets. Daniel Avellaneda Desarrollo de Aplicaciones Distribuidas Sockets Daniel Avellaneda Sockets en Java Qué es un Socket Un socket es una abstracción a través de la cual una aplicación pueden mandar y recibir datos. Un socket

Más detalles

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

Sockets. Los sockets son un mecanismo de comunicación entre procesos que se utiliza en Internet. Sockets La biblioteca estándar de clases de Java nos proporciona todo lo que necesitamos para utilizar sockets en nuestras aplicaciones en el paquete java.net, por lo que tendremos que añadir la siguiente

Más detalles

Cliente/Servidor en Java

Cliente/Servidor en Java Cliente/Servidor en Java Grupo ARCOS Desarrollo de Aplicaciones Distribuidas Ingeniería Informática Universidad Carlos III de Madrid Contenidos 1. Introducción: 1. Paradigma cliente/servidor 2. Entorno

Más detalles

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

1.- FUNDAMENTOS...2 2.- FUNCIONAMIENTO GENÉRICO...3 3.- JAVA SOCKETS... 4. 3.4.1.- Creación de Streams de Entrada...7 1.- FUNDAMENTOS...2 2.- FUNCIONAMIENTO GENÉRICO...3 3.- JAVA SOCKETS... 4 3.1.- INTRODUCCION... 4 3.2.- MODELO DE COMUNICACIONES CON JAVA...5 3.3.- APERTURA DE SOCKETS... 6 3.4.- CREACIÓN DE STREAMS...

Más detalles

PROGRAMACIÓN CLIENTE-SERVIDOR MEDIANTE SOCKETS EN JAVA

PROGRAMACIÓN CLIENTE-SERVIDOR MEDIANTE SOCKETS EN JAVA PROGRAMACIÓN CLIENTE-SERVIDOR MEDIANTE SOCKETS EN JAVA Qué es la arquitectura cliente servidor? La arquitectura cliente-servidor es un modelo de aplicación distribuida en el que las tareas se reparten

Más detalles

INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES (MÓDULO 2)

INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES (MÓDULO 2) INGENIERÍA F. I. M. DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS F. I. M. L.S.I.I.S L.S.I.I.S INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES (MÓDULO 2) http://www.personal.fi.upm.es/~lmengual/inicio_ip.html

Más detalles

EJEMPLOS PROGRAMACIÓN SOCKET - JAVA

EJEMPLOS PROGRAMACIÓN SOCKET - JAVA EJEMPLOS PROGRAMACIÓN SOCKET - JAVA 1.- Calcular el Cuadrado TCP En esta aplicación el cliente se conecta al servidor, para ello debe introducir la dirección IP del servidor y los parámetros sobre los

Más detalles

Formato para prácticas de laboratorio

Formato para prácticas de laboratorio CARRERA PLAN DE ESTUDIO CLAVE ASIGNATURA NOMBRE DE LA ASIGNATURA IC y LSC 2003-1 5038 Programación Orientada a Objetos II PRÁCTICA No. 3 LABORATORIO DE NOMBRE DE LA PRÁCTICA DURACIÓN (HORA) Sockets 4 1

Más detalles

Federico Peinado www.federicopeinado.es

Federico Peinado www.federicopeinado.es Federico Peinado www.federicopeinado.es Depto. de Ingeniería del Software e Inteligencia Artificial disia.fdi.ucm.es Facultad de Informática www.fdi.ucm.es Universidad Complutense de Madrid www.ucm.es

Más detalles

Ángel Villa Brasero - Actividad Foro Unidad 2 26/11/ Clases de la aplicación. ApNumeroPerfecto.java. VentanaPrincipal.java

Ángel Villa Brasero - Actividad Foro Unidad 2 26/11/ Clases de la aplicación. ApNumeroPerfecto.java. VentanaPrincipal.java 1. Clases de la aplicación ApNumeroPerfecto.java package numero_perfecto; import java.awt.dimension; import java.awt.toolkit; import javax.swing.jframe; import javax.swing.uimanager; public class ApNumeroPerfecto

Más detalles

HOJA DE EJERCICIOS 5 PROGRAMACIÓN CON EXCEPCIONES EN JAVA

HOJA DE EJERCICIOS 5 PROGRAMACIÓN CON EXCEPCIONES EN JAVA Estructura de la Información en Programación I.T.I.G., Matemáticas. Curso 2008/2009 Nombre:... Fecha: / 01 / 2009 HOJA DE EJERCICIOS 5 PROGRAMACIÓN CON EXCEPCIONES EN JAVA Esta hoja de ejercicios nos servirá

Más detalles

Sistema de Archivos en Java

Sistema de Archivos en Java David González Segundo SISTEMAS OPERATIVOS ICO-16 Fecha: 27/Octubre/2014 Sistema de Archivos en Java Propósito: El alumno elaborara un programa en el que representa el sistema de archivos que permita guardar,

Más detalles

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

Capítulo 5. Programación de aplicaciones de red Capítulo 5. Programación de aplicaciones de red Redes de Ordenadores 2º Grado en Ingeniería en Tecnologías de Telecomunicación 1 Área de Ingeniería Telemática Capítulo 5: Programación de aplicaciones de

Más detalles

Arquitecturas cliente/servidor

Arquitecturas cliente/servidor Arquitecturas cliente/servidor Creación de Sockets Cliente Servidor 1 Creación de Sockets Cliente/Servidor Sockets en TCP Concepto de Hilos Definición de DAEMON Sockets en UDP 2 THREADS 3 Qué es un thread?

Más detalles

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

Sockets en Java. La Creatividad proviene de un conflicto de ideas. Uso de Sockets Uso de Sockets Este pequeño manual, le muestra cómo funciona el Socket Server para crear un pequeño servidor web que envía una página HTML a cualquier Navegador Web como Firefox, Internet Explorer, etc..

Más detalles

Test : Conteste exclusivamente en una HOJA DE LECTURA ÓPTICA, no olvidando marcar que su tipo de examen es A.

Test : Conteste exclusivamente en una HOJA DE LECTURA ÓPTICA, no olvidando marcar que su tipo de examen es A. SISTEMAS INFORMÁTICOS I Junio 2003 INGENIERÍA EN INFORMÁTICA - Código Carrera 55 - Código Asignatura 077 Tipo de Examen: A NO SE PERMITE EL USO DE NINGÚN MATERIAL Tiempo: 2 horas Apellidos: Nombre: DNI:

Más detalles

Parte I: Programación en un lenguaje orientado a objetos

Parte I: Programación en un lenguaje orientado a objetos Parte I: Programación en un lenguaje orientado a objetos 1. Introducción a los lenguajes de programación 2. Datos y expresiones 3. Estructuras algorítmicas 4. Datos compuestos 5. Modularidad 6. Tratamiento

Más detalles

Unidad VI. archivos de texto llano o texto simple por carecer de información destinada a generar formatos y tipos de letra.

Unidad VI. archivos de texto llano o texto simple por carecer de información destinada a generar formatos y tipos de letra. Unidad VI Archivos. 6.1 Definición de Archivos de texto y archivos binarios. Los archivos de texto plano son aquellos que están compuestos únicamente por texto sin formato, solo caracteres. estos caracteres

Más detalles

Práctica #5: Uso de control de flujo, Excepciones y Lectura Estándar

Práctica #5: Uso de control de flujo, Excepciones y Lectura Estándar Práctica #5: Uso de control de flujo, Excepciones y Lectura Estándar Introducción El alumno creará cuatro programas en java que manejen control de flujo mediante las sentencias de bucle while y do/while,

Más detalles

Carlos Montenegro. Programación Orientada a Objetos Proyecto Curricular de Ingeniería de Sistemas

Carlos Montenegro. Programación Orientada a Objetos Proyecto Curricular de Ingeniería de Sistemas 2 - Introducción al lenguaje Java, identificadores y comentarios. Carlos Montenegro Programación Orientada a Objetos Proyecto Curricular de Ingeniería de Sistemas 1. Introducción: Java tiene como todos

Más detalles

QUICKSORT JAMES GUARIN CARO JAHIR ARDILA GERMAN ORTEGON DAVID GOMEZ UNIVERSIDAD PILOTO DE COLOMBIA INGENIERIA DE SISTEMAS BOGOTA 2010

QUICKSORT JAMES GUARIN CARO JAHIR ARDILA GERMAN ORTEGON DAVID GOMEZ UNIVERSIDAD PILOTO DE COLOMBIA INGENIERIA DE SISTEMAS BOGOTA 2010 QUICKSORT JAMES GUARIN CARO JAHIR ARDILA GERMAN ORTEGON DAVID GOMEZ UNIVERSIDAD PILOTO DE COLOMBIA INGENIERIA DE SISTEMAS BOGOTA 2010 1 TABLA DE CONTENIDO 1. Descripción 2. Pseudocódigo 3. Optimizado 4.

Más detalles

Arquitecturas cliente/servidor

Arquitecturas cliente/servidor Arquitecturas cliente/servidor Creación de Sockets Cliente Servidor Creación de Sockets Cliente/Servidor Sockets en TCP Sockets en UDP Definición de DAEMON Concepto de Hilos Qué es un socket? Un socket

Más detalles

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

UNIVERSIDADE DA CORUÑA Departamento de Tecnoloxías da Información e as Comunicacións LABORATORIO DE RC: TUTORIAL DE SOCKETS EN JAVA UNIVERSIDADE DA CORUÑA Departamento de Tecnoloxías da Información e as Comunicacións LABORATORIO DE RC: TUTORIAL DE SOCKETS EN JAVA Índice 1. Presentación...3 2. Conceptos básicos...4 2.1. TCP...4 2.2.

Más detalles

Lab 01: Programación de Sockets en TCP

Lab 01: Programación de Sockets en TCP UNIVERSIDAD NACIONAL DE SAN ANTONIO ABAD DEL CUSCO Departamento Académico de Informática REDES Y TELECOMUNICACIONES 2 Lab 01: Programación de Sockets en TCP Ingº Manuel Peñaloza Figueroa Dime y lo olvidaré.

Más detalles

Tema II. Sockets. Desarrollo de Aplicaciones para Internet Curso Miguel Reboiro Jato

Tema II. Sockets. Desarrollo de Aplicaciones para Internet Curso Miguel Reboiro Jato Tema II. Sockets Desarrollo de Aplicaciones para Internet Curso 12 13 Miguel Reboiro Jato Índice 1. Qué es un Socket? 2. Tipos de Socket 3. Sockets en Java 1. InetAddress y SocketAddress 2. Socket y ServerSocket

Más detalles

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

Comunicación entre procesos: sockets udp. Jorge Iván Meza Martínez Comunicación entre procesos: sockets udp Jorge Iván Meza Martínez jimezam@gmail.com Especialización en Gestión de Redes de Datos Universidad Nacional de Colombia Sede Manizales 1/31 Contenidos Conceptos

Más detalles

USO DE LOS OBJETOS JLABEL, JTEXTFIELD Y JBUTTON

USO DE LOS OBJETOS JLABEL, JTEXTFIELD Y JBUTTON USO DE LOS OBJETOS JLABEL, JTEXTFIELD Y JBUTTON Una aplicación sin usar Formulario A continuación vamos a desarrollar una aplicación sencilla que permita calcular el área del triángulo dado los valores

Más detalles

FACULTAD DE INGENIERÍA

FACULTAD DE INGENIERÍA NOMBRE DEL PROFESOR: Ing. Héctor Manuel Quej Cosgaya NOMBRE DE LA PRÁCTICA: Estructuras de decisión PRÁCTICA NÚM. [ 5 ] LABORATORIO: MATERIA: UNIDAD: TIEMPO: Centro de Ingeniería Computacional Lenguaje

Más detalles

Introducción a Java. Dr. (c) Noé Alejandro Castro Sánchez

Introducción a Java. Dr. (c) Noé Alejandro Castro Sánchez Introducción a Java Dr. (c) Noé Alejandro Castro Sánchez Programas Java Applets Pueden correr en navegadores Web Agregan funcionalidad a páginas Web Se llega a restringir su funcionalidad (e. g., no pueden:

Más detalles

Descarga de Listas de Música Proyecto Examen Final

Descarga de Listas de Música Proyecto Examen Final Descarga de Listas de Música Proyecto Examen Final Temas: Sockets, Hilos, Base de Datos y ServLets/WebServices, Principios de Diseño de paquetes y de clases a. El aplicativo debe cumplir con los principios

Más detalles

PROGRAMACION DISTRIBUIDA

PROGRAMACION DISTRIBUIDA PROGRAMACION DISTRIBUIDA Distribución basada en el patrón proxy-servant Héctor Pérez 2 Distribución de aplicaciones basadas en objetos Objetivo: rediseño de una aplicación orientada a objetos para ser

Más detalles

Ingeniería del Software Separación entre Presentación y Lógica del Negocio

Ingeniería del Software Separación entre Presentación y Lógica del Negocio Introducción En este laboratorio desarrollaremos una aplicación que verifica si una cuenta y un password son correctos. En dicha aplicación la presentación y la lógica del negocio se definirán en dos capas

Más detalles

Tema 6. Threads: programas multitarea

Tema 6. Threads: programas multitarea Tema 6. Threads: programas multitarea Procesos e hilos Creación de threads Ciclo de vida de un thread Sincronización Prioridades Grupos de threads Relación de métodos Ejemplo sincronización 1 Procesos

Más detalles

Las clases Java Socket y ServerSocket

Las clases Java Socket y ServerSocket Las clases Java Socket y ServerSocket Lenguajes y Herramientas de Programación Universidad de La Laguna Programa de Doctorado de Física e Informática Escuela Técnica Superior Superior de Ingeniería Informática

Más detalles

Formato para prácticas de laboratorio

Formato para prácticas de laboratorio UNIVERSIDAD AUTÓNOMA DE BAJA CALIFORNIA FACULTAD DE INGENIERÍA (UNIDAD MEXICALI) Formato para prácticas de laboratorio CARRERA PLAN DE ESTUDIO CLAVE DE UNIDAD DE APRENDIZAJE NOMBRE DE LA UNIDAD DE APRENDIZAJE

Más detalles

Programación concurrente y semáforos en Java

Programación concurrente y semáforos en Java Programación concurrente y semáforos en Java En Java es posible ejecutar tareas en paralelo, utilizando hebras de control (hilos, threads). Este modo de programación permite tener un espacio de memoria,

Más detalles

Desarrollo de Aplicaciones en Java INF 473

Desarrollo de Aplicaciones en Java INF 473 Desarrollo de Aplicaciones en Java INF 473 Desarrollo de Interfaces Gráficas Componentes Swing II Prof. José Miguel Rubio jose.rubio.l@ucv.cl jrubio@inf.ucv.cl PUCV Marzo 2008 0 Generación de código Diferencia

Más detalles

UNIVERSIDAD CARLOS III DE MADRID DEPARTAMENTO DE INGENIERÍA TELEMÁTICA. Daniel Díaz Sánchez

UNIVERSIDAD CARLOS III DE MADRID DEPARTAMENTO DE INGENIERÍA TELEMÁTICA. Daniel Díaz Sánchez UNIVERSIDAD CARLOS III DE MADRID DEPARTAMENTO DE INGENIERÍA TELEMÁTICA Sockets para servidor Daniel Díaz Sánchez Florina Almenárez Andrés Marín Departamento de Ingeniería Telemática Universidad Carlos

Más detalles

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

LABORATORIO DE RC PRÁCTICA 2: IMPLEMENTACIÓN DE UN CLIENTE Y SERVIDOR DE UNIVERSIDADE DA CORUÑA Departamento de Tecnoloxías da Información e as Comunicacións LABORATORIO DE RC PRÁCTICA 1: IMPLEMENTACIÓN DE UN CLIENTE Y SERVIDOR DE ECO UDP PRÁCTICA 2: IMPLEMENTACIÓN DE UN CLIENTE

Más detalles

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

Plugin para NetBeans que realiza migración de una base de datos postgresql a couchdb. CAPITULO POSTGRESQL TO COUCHDB PLUGINS Modulo: p2cnb Plugin para NetBeans que realiza migración de una base de datos postgresql a couchdb. 1. Crear el nuevo proyecto. Seleccionar Modulos NetBeans y en

Más detalles

Formato para prácticas de laboratorio

Formato para prácticas de laboratorio Fecha de efectividad: 2011-1 UNIVERSIDAD AUTÓNOMA DE BAJA CALIFORNIA FACULTAD DE INGENIERÍA (UNIDAD MEXICALI) Formato para prácticas de laboratorio CARRERA PLAN DE ESTUDIO CLAVE DE UNIDAD DE APRENDIZAJE

Más detalles

NetC.Time. Historia. Tito Agudelo Pedro Fula Yesid Gutierrez Oscar Munevar

NetC.Time. Historia. Tito Agudelo Pedro Fula Yesid Gutierrez Oscar Munevar Parcial 02 04/10/10 II Parcial Analisis de Algoritmos NetC.Time s Metodo Shell Sort Tito Agudelo Pedro Fula Yesid Gutierrez Oscar Munevar Historia El ordenamiento Shell (Shell sort en inglés) es un algoritmo

Más detalles

Por el contrario System.in es un byte Stream sin caracteristicas de character Stream.

Por el contrario System.in es un byte Stream sin caracteristicas de character Stream. I/O desde la linea de Comandos Los programas normalmente tienen funcionalidades para el ingreso o captura de datos desde la linea de comandos. La plataforma Java soporta estas iteracciones de dos formas:

Más detalles

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

Luego lleve el cliente a otra máquina y ejecute desde ahí usando el nombre de la máquina del servidor. Ejemplos de sockets Los sockets son un mecanismo de comunicación entre procesos de muy bajo nivel, donde el usuario tiene que hacer muchas cosas, pero que siguen siendo muy importantes. En esta práctica

Más detalles

ADMINISTRACIÓN GENERAL DE TECNOLOGÍA DE LA INFORMACIÓN ADMINISTRACIÓN CENTRAL DE DESARROLLO Y MANTENIMIENTO DE APLICACIONES

ADMINISTRACIÓN GENERAL DE TECNOLOGÍA DE LA INFORMACIÓN ADMINISTRACIÓN CENTRAL DE DESARROLLO Y MANTENIMIENTO DE APLICACIONES ADMINISTRACIÓN GENERAL DE TECNOLOGÍA DE LA INFORMACIÓN ADMINISTRACIÓN CENTRAL DE DESARROLLO Y MANTENIMIENTO DE APLICACIONES SISTEMA DE AUTOMATIZACIÓN ADUANERA INTEGRAL (S. A. A. I.) PROTOCOLOS DE COMUNICACIÓN

Más detalles

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

Sockets. Introducción. Las redes de computadoras permiten al usuario. Curso Propedéutico Maestría en Ciencias de la Computación BUAP Sockets Curso Propedéutico Maestría en Ciencias de la Computación BUAP Introducción Las redes de computadoras permiten al usuario Acceder a datos remotos Procesamiento remoto Recursos remotos Dr. Ivan

Más detalles

UNIVERSIDAD POLITÉCNICA DE PACHUCA SOCKETS EN JAVA

UNIVERSIDAD POLITÉCNICA DE PACHUCA SOCKETS EN JAVA SOCKETS EN JAVA Los sockets son puntos finales de enlaces de comunicaciones entre procesos. Los procesos los tratan como descriptores de ficheros, de forma que se pueden intercambiar datos con otros procesos

Más detalles

Objetivos de la sesión. Aplicación de consola 7/30/11. Código con que se inicia un programa en Visual C# (aplicación de consola)

Objetivos de la sesión. Aplicación de consola 7/30/11. Código con que se inicia un programa en Visual C# (aplicación de consola) Objetivos de la sesión Entender el tipo de programas que se pueden realizar con aplicaciones de consola. Conocer el concepto de variable, la forma en que se declaran y su utilización. Conocer la forma

Más detalles

Práctica III: Streams, Readers y Writers

Práctica III: Streams, Readers y Writers Práctica III: Streams, Readers y Writers Objetivos En esta práctica vamos a aprender a utilizar Streams, Readers y Writers para realizar operaciones de entrada/salida desde programas escritos en el lenguaje

Más detalles

Universidad de Cantabria

Universidad de Cantabria Serialization Pedro Corcuera Dpto. Matemática Aplicada y Ciencias de la Computación Universidad de Cantabria corcuerp@unican.es Objetivos Comprender la serialización de objetos para obtener la persistencia

Más detalles

Tema 2: EL TIPO DE DATOS ENTERO. INSTRUCCIÓN DE ASIGNACIÓN Y DE COMPOSICIÓN SECUENCIAL

Tema 2: EL TIPO DE DATOS ENTERO. INSTRUCCIÓN DE ASIGNACIÓN Y DE COMPOSICIÓN SECUENCIAL Tema 2: EL TIPO DE DATOS ENTERO. INSTRUCCIÓN DE ASIGNACIÓN Y DE COMPOSICIÓN SECUENCIAL Cualquier duda sobre el contenido de este tema se puede enviar al foro TEORIA2. 2.1.- El tipo de datos entero (byte,

Más detalles

Andrés Donaciano Martínez Guillén -.- Fundamentos de programación -.andresmtzgwordpress.com

Andrés Donaciano Martínez Guillén -.- Fundamentos de programación -.andresmtzgwordpress.com Andrés Donaciano Martínez Guillén -.- Fundamentos de programación -. Introducción. Andrés Donaciano Martínez Guillén -.- Fundamentos de programación -.- El presente documento busca ser una referencia para

Más detalles

GUÍA DE LABORATORIO 5 ARREGLOS DE UNA DIMENSIÓN

GUÍA DE LABORATORIO 5 ARREGLOS DE UNA DIMENSIÓN GUÍA DE LABORATORIO 5 ARREGLOS DE UNA DIMENSIÓN INTRODUCCION Un arreglo es una colección de variables del mismo tipo, referidos por un nombre común. En Java, los arreglos tienen una o más dimensiones,

Más detalles

Ingeniería en Desarrollo de Software 4 o semestre. Programa de la asignatura: Programación orientada a objetos II. Unidad 1.

Ingeniería en Desarrollo de Software 4 o semestre. Programa de la asignatura: Programación orientada a objetos II. Unidad 1. Ingeniería en Desarrollo de Software 4 o semestre Programa de la asignatura: Programación orientada a objetos II Actividades de aprendizaje Clave: ING: 15142421 TSU: 16142421 Universidad Abierta y a Distancia

Más detalles

FACULTAD DE INGENIERÍA

FACULTAD DE INGENIERÍA NOMBRE DEL PROFESOR: Ing. Héctor Manuel Quej Cosgaya NOMBRE DE LA PRÁCTICA: Fundamentos de Programación Orientada a Objetos PRÁCTICA NÚM. [ 7 ] LABORATORIO: MATERIA: UNIDAD: TIEMPO: Centro de Ingeniería

Más detalles

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

Sockets en Java. Prof. Wílmer Pereira Universidad Simón Bolívar Sockets en Java Prof. Wílmer Pereira Universidad Simón Bolívar Arquitectura Cliente/Servidor Cliente Request Reply Servidor Cómo permitir comunicación entre objetos situados en diferentes máquinas? Sockets

Más detalles

Práctica 5: Servidor web concurrente en Java

Práctica 5: Servidor web concurrente en Java Práctica 5: Servidor web concurrente en Java Esta práctica pretende familiarizar al alumno con la programación de servidores que emplean sockets TCP. Para ello partiremos del servidor web básico visto

Más detalles

Resumen Clase Anterior Ejercicio Clase 16 Archivos Ejemplo. ING1310 Introducción a la Computación. Archivos

Resumen Clase Anterior Ejercicio Clase 16 Archivos Ejemplo. ING1310 Introducción a la Computación. Archivos ING1310 Introducción a la Computación Archivos Carlos Reveco creveco@dcc.uchile.cl careveco@miuandes.cl Facultad de Ingeniería/Universidad de los Andes/Chile Rev : 232 C.Reveco Facultad de Ingeniería/Universidad

Más detalles

Introduciendo datos desde el

Introduciendo datos desde el Introduciendo datos desde el teclado Pedro Corcuera Dpto. Matemática Aplicada y Ciencias de la Computación Universidad de Cantabria corcuerp@unican.es Objetivos Crear programas interactivos que lean datos

Más detalles

Introducción a Java 10/02/2011. Tokens. Juan Manuel Fernández Peña Curso Rev Tokens. Tokens

Introducción a Java 10/02/2011. Tokens. Juan Manuel Fernández Peña Curso Rev Tokens. Tokens Introducción a Java Juan Manuel Fernández Peña Curso 2005. Rev 2011 Comentarios: //comentario /* comentario fin de comentario */ /** comentario para javadoc fin */ Palabras reservadas: (como ejemplo) abstract,

Más detalles

Objetivos. El alumno empleará el concepto de excepción en la programación orientada a objetos para el manejo de errores de ejecución.

Objetivos. El alumno empleará el concepto de excepción en la programación orientada a objetos para el manejo de errores de ejecución. Universidad Nacional Autónoma de México Facultad de Ingeniería PRACTICA 10 PROGRAMACIÓN ORIENTADA A OBJETOS (MANEJO DE EXCEPCIONES) Objetivos El alumno empleará el concepto de excepción en la programación

Más detalles

Si bien hay gran cantidad de excepciones, todas derivan de la clase Exception, además de las excepciones ya manejadas, se pueden crear propias.

Si bien hay gran cantidad de excepciones, todas derivan de la clase Exception, además de las excepciones ya manejadas, se pueden crear propias. Práctica No. 6. Manejo de Excepciones Java permite el manejo de excepciones, esto permite que cuando ocurra algún error en tiempo de ejecución, se pueda evitar que el programa finalice de manera incorrecta.

Más detalles

IIC1103 Introducción a la Programación. Ayudantía: Archivos

IIC1103 Introducción a la Programación. Ayudantía: Archivos Resumen teórico Pontificia Universidad Católica de Chile Escuela de Ingeniería Departamento de Ciencia de la Computación IIC1103 Introducción a la Programación Ayudantía: Archivos Profesores: Daniel Langdon

Más detalles

PROTOCOLOS DE RED SMTP

PROTOCOLOS DE RED SMTP PROTOCOLOS DE RED SMTP Qué es SMTP? Simple Mail Transfer Protocol (SMTP) Protocolo Simple de Transferencia de Correo, es un protocolo de la capa de aplicación. Protocolo de red basado en textos utilizados

Más detalles

Variables. Una variable no es más que un nombre simbólico que identifica una dirección de memoria: vs.

Variables. Una variable no es más que un nombre simbólico que identifica una dirección de memoria: vs. Variables Una variable no es más que un nombre simbólico que identifica una dirección de memoria: Suma el contenido de la posición 3001 y la 3002 y lo almacenas en la posición 3003 vs. total = cantidad1

Más detalles

Estructuras de control selectivas

Estructuras de control selectivas Práctica 3 Estructuras de control selectivas Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión 2.0.2 Concepto de sentencia y estructura de control El cuerpo de los métodos

Más detalles

Programación concurrente en Java

Programación concurrente en Java Diseño Y Aplicaciones de Sistemas Distribuidos Programación concurrente en Java Joan Vila DISCA / UPV Departament d Informàtica de Sistemes i Computadors Universitat Politècnica de València Threads en

Más detalles

Examen de Redes - ETSIA 9 de septiembre - Primer Parcial

Examen de Redes - ETSIA 9 de septiembre - Primer Parcial Apellidos, Nombre: Grupo: Examen de Redes - ETSIA 9 de septiembre - Primer Parcial AUTORIZO a los profesores de la asignatura Redes de 2º curso de la ETSIA a publicar las calificaciones de los exámenes

Más detalles

UNADM. Estructura de datos. Guillermo Duran Garcia AL Actividad 2. Identificación de errores en métodos de ordenación

UNADM. Estructura de datos. Guillermo Duran Garcia AL Actividad 2. Identificación de errores en métodos de ordenación UNADM Estructura de datos Actividad 2. Identificación de errores en métodos de ordenación Guillermo Duran Garcia AL12524075 Actividad 2. Identificación de errores en métodos de ordenación. La siguiente

Más detalles

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

Multienhebrado en Java Un toque de sincronización Transporte en Java Ejemplo conjunto Java y multiprogramación sobre red Sistemas Distribuidos ITInformática (UVA) César Llamas Bello 2003 Índice Multienhebrado en Java Un toque de sincronización Transporte en Java Ejemplo conjunto 26/02/2003

Más detalles

Guillermo Román Díez

Guillermo Román Díez Concurrencia Creación de Procesos en Java Guillermo Román Díez groman@fi.upm.es Universidad Politécnica de Madrid Curso 2016-2017 Guillermo Román, UPM CC: Creación de Procesos en Java 1/18 Concurrencia

Más detalles

Entrada y Salida de datos

Entrada y Salida de datos Entrada y Salida de datos El intercambio de datos entre el programa y el exterior da lugar a la diversidad de dispositivos y de formas de comunicación (modo de acceso, si es binaria, etc.). Los flujos

Más detalles

Programación Java. Introducción a Archivos de datos de Entrada

Programación Java. Introducción a Archivos de datos de Entrada Programación Java Introducción a Archivos de datos de Entrada Consideremos el siguiente algoritmo: Algoritmo (no modular) para determinar y mostrar el promedio aritmético (media aritmética) de los elementos

Más detalles

Tema: Introducción al IDE de Microsoft Visual C#.

Tema: Introducción al IDE de Microsoft Visual C#. Tema: Introducción al IDE de Microsoft Visual C#. Objetivos: El propósito de este tema es que el alumno se familiarice con el entorno de desarrollo de Visual C# Express mientras crea el formulario más

Más detalles

INTERFACE ITERATOR DEL API JAVA. MÉTODO REMOVE PARA BORRAR OBJETOS EN COLECCIONES. EJERCICIOS Y EJEMPLO RESUELTO. (CU00919C)

INTERFACE ITERATOR DEL API JAVA. MÉTODO REMOVE PARA BORRAR OBJETOS EN COLECCIONES. EJERCICIOS Y EJEMPLO RESUELTO. (CU00919C) APRENDERAPROGRAMAR.COM INTERFACE ITERATOR DEL API JAVA. MÉTODO REMOVE PARA BORRAR OBJETOS EN COLECCIONES. EJERCICIOS Y EJEMPLO RESUELTO. (CU00919C) Sección: Cursos Categoría: Lenguaje de programación Java

Más detalles

Instrucción de selección múltiple switch.

Instrucción de selección múltiple switch. Instrucción de selección múltiple switch. Java cuenta con la instrucción switch de selección múltiple para realizar distintas acciones, con base en os posibles valores de una variable o expresión entera.

Más detalles

Flujos (streams) Programación. Licenciatura Lingüística y Nuevas Tecnologias Nadjet Bouayad-Agha

Flujos (streams) Programación. Licenciatura Lingüística y Nuevas Tecnologias Nadjet Bouayad-Agha Flujos (streams) Programación Nadjet Bouayad-Agha Licenciatura Lingüística y Nuevas Tecnologias 2007 Agenda Java e argumentos de entrada: args.zip Como leer e escribir datos de/a los flujos estándares.

Más detalles

FACULTAD DE INGENIERÍA

FACULTAD DE INGENIERÍA NOMBRE DEL PROFESOR: Ing. Héctor Manuel Quej Cosgaya NOMBRE DE LA PRÁCTICA: Variables y Tipos de Datos PRÁCTICA NÚM. [ 1 ] LABORATORIO: MATERIA: UNIDAD: TIEMPO: Centro de Ingeniería Computacional Lenguaje

Más detalles

Tema 3: COMUNICACIÓN ENTRE PROCESOS

Tema 3: COMUNICACIÓN ENTRE PROCESOS Tema 3: COMUNICACIÓN ENTRE PROCESOS E. U. Informática en Segovia Departamento de Informática Universidad de Valladolid 1 Introducción Estudia las comunicaciones punto a punto entre los lados de un enlace

Más detalles

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

Introducción a Java LSUB. 30 de enero de 2013 GSYC Introducción a Java LSUB GSYC 30 de enero de 2013 (cc) 2013 Laboratorio de Sistemas, Algunos derechos reservados. Este trabajo se entrega bajo la licencia Creative Commons Reconocimiento - NoComercial

Más detalles

Escuela Politécnica Superior de Linares

Escuela Politécnica Superior de Linares Escuela Politécnica Superior de Linares UNIVERSIDAD DE JAÉN Escuela Politécnica Superior de Linares MINERÍA DE DATOS E INTELIGENCIA DE NEGOCIO: UNA APLICACIÓN A LA ESTIMACIÓN DEL PRECIO DEL ACEITE DE OLIVA

Más detalles

Tema 5 Corrección y Robustez Excepciones en Java

Tema 5 Corrección y Robustez Excepciones en Java Tema 5 Corrección y Robustez Excepciones en Java Parte II: Excepciones en Java Programación Orientada a Objetos Curso 2013/2014 Contenido Introducción Excepciones comprobadas Caso de estudio Tratamiento

Más detalles

Unidad V. Ya veremos qué poner en "algunas_palabras" y "algo_más", por ahora sigamos un poco más.

Unidad V. Ya veremos qué poner en algunas_palabras y algo_más, por ahora sigamos un poco más. Implementación Orientada a Objetos. Unidad V 5.1 Estructura de una clase. Una clase consiste en: algunas_palabras class nombre_de_la_clase [algo_más] { [lista_de_atributos] [lista_de_métodos] Lo que está

Más detalles

Programación de sistemas

Programación de sistemas Programación de sistemas Interfaces Gráficas I. Conceptos básicos II. Eventos Departamento de Ingeniería Telemática José Jesús García Rueda y Carlos Alario Hoyos

Más detalles

Universidad Nacional del Santa FACULTAD DE INGENIERIA E.A.P. Ingeniería de Sistemas e Informática NETBEANS 7.0 MI PRIMER PROYECTO

Universidad Nacional del Santa FACULTAD DE INGENIERIA E.A.P. Ingeniería de Sistemas e Informática NETBEANS 7.0 MI PRIMER PROYECTO Universidad Nacional del Santa FACULTAD DE INGENIERIA E.A.P. Ingeniería de Sistemas e Informática NETBEANS 7.0 MI PRIMER PROYECTO El NetBeans es un entorno de desarrollo integrado que permite crear aplicaciones

Más detalles

Centro Asociado Palma de Mallorca. Antonio Rivero Cuesta

Centro Asociado Palma de Mallorca. Antonio Rivero Cuesta Centro Asociado Palma de Mallorca Introducción Práctica de Programación Java Antonio Rivero Cuesta Sesión VIII Entrada y Salida... 5 Entrada de Datos... 8 Salida de Datos... 9 Flujo... 10 Scanner... 14

Más detalles

CORBA desde Java. Diego Sevilla Ruiz Sistemas Distribuidos. 1. Introducción

CORBA desde Java. Diego Sevilla Ruiz Sistemas Distribuidos. 1. Introducción CORBA desde Java Diego Sevilla Ruiz Sistemas Distribuidos Índice 1. Introducción 1 2. Primeros pasos 1 2.1. Fichero IDL................................... 1 2.2. Cliente......................................

Más detalles

Guía - Taller # 2 (JAVA)

Guía - Taller # 2 (JAVA) CEET - Distrito Capital Programa de Formación: ADSI 150752 TRIMESTRE VI Conocimiento de Conocimiento: Aplicar diversos estilos de Programación usando herramientas para Desarrollo Web Instructor: Ing. Espec.

Más detalles

1 SOCKETS EN JAVA. Sistemas Distribuidos::Sockets en Java EUI-SG/INFOR.UVA.ES 1

1 SOCKETS EN JAVA. Sistemas Distribuidos::Sockets en Java EUI-SG/INFOR.UVA.ES 1 1 SOCKETS EN JAVA La programación en red siempre ha sido dificultosa, el programador debía de conocer la mayoría de los detalles de la red, incluyendo el hardware utilizado, los distintos niveles en que

Más detalles

Ejecución de hebras. En realidad, todas las aplicaciones escritas en Java son aplicaciones multihebra (recuerde el recolector de basura).

Ejecución de hebras. En realidad, todas las aplicaciones escritas en Java son aplicaciones multihebra (recuerde el recolector de basura). Ejecución de hebras En realidad, todas las aplicaciones escritas en Java son aplicaciones multihebra (recuerde el recolector de basura). Hebras vs. Procesos Los cambios de contexto son más costosos en

Más detalles

Introducción a Java. Introducción a Java. Programación I

Introducción a Java. Introducción a Java. Programación I Introducción a Java Introducción a Java Programación I Como Funciona Tipos de Datos TIPO TAMAÑO RANGO byte 8 bits Valores numéricos de 128 a 127 short 16 bits Valores numéricos de 32.768 a 32.767 int 32

Más detalles

Tutorial 6: Qué es una función? y como utilizarla

Tutorial 6: Qué es una función? y como utilizarla Tutorial 6: Qué es una función? y como utilizarla AR 6 T Objetivo En la siguiente lección desarrollaremos el tema de las funciones en Arduino, para poder aplicarlo en las practicas siguientes ya que será

Más detalles

Universidad Autónoma de Baja California Facultad de Ingeniería Apuntes de Programación Orientada a Objetos I

Universidad Autónoma de Baja California Facultad de Ingeniería Apuntes de Programación Orientada a Objetos I Hilos Universidad Autónoma de Baja California Hasta el momento los programas que se han estado manejando en el curso han sido secuenciales. Esto es, inician en un punto y continuan su ejecución de manera

Más detalles

Threads o Hilos. Un thread en JAVA comienza como una instancia de java.lang.thread antes de convertirse en un hilo de ejecución.

Threads o Hilos. Un thread en JAVA comienza como una instancia de java.lang.thread antes de convertirse en un hilo de ejecución. Threads o Hilos Los hilos son otra forma de crear la posibilidad de concurrencia de actividades; sin embargo, la gran diferencia es que los hilos comparten el código y el acceso a los datos. En cierta

Más detalles

DISEÑO DE UNA ARQUITECTURA CLIENTE/SERVIDOR MEDIANTE OBJETOS DISTRIBUIDOS EN JAVA

DISEÑO DE UNA ARQUITECTURA CLIENTE/SERVIDOR MEDIANTE OBJETOS DISTRIBUIDOS EN JAVA DISEÑO DE UNA ARQUITECTURA CLIENTE/SERVIDOR MEDIANTE OBJETOS DISTRIBUIDOS EN JAVA José Luis Pastrana Brincones (pastrana@lcc.uma.es) Dpto. Lenguajes y Ciencias de la Computación. Universidad de Málaga

Más detalles