Este documento describe sockets y threads en Java. Explica qué es un socket y los tipos de sockets orientados y no orientados a conexión. Detalla las clases Socket, ServerSocket y DatagramSocket y sus métodos. También describe qué es un thread, sus estados y la clase Thread, incluyendo métodos como start(), run(), join() y sleep(). Finalmente, introduce la necesidad de sincronización cuando varios threads acceden a los mismos datos.
Este documento describe sockets y threads en Java. Explica qué es un socket y los tipos de sockets orientados y no orientados a conexión. Detalla las clases Socket, ServerSocket y DatagramSocket y sus métodos para la comunicación cliente-servidor. También explica qué es un thread, sus atributos y estados, y la clase Thread. Por último, presenta un ejemplo de chat que utiliza sockets y threads para la comunicación entre clientes a través de un servidor.
Este documento describe ZooKeeper, un servicio de coordinación para aplicaciones distribuidas. ZooKeeper permite que los procesos distribuidos se coordinen a través de un espacio de nombres jerárquico compartido. Proporciona servicios como administración de configuración, bloqueos, sincronización y grupos de servicios. Los desarrolladores pueden usar ZooKeeper en lugar de tener que escribir su propia lógica de coordinación distribuida.
Este documento describe los tipos y clases de direcciones IP. Explica las direcciones IP públicas y privadas, y las clases de direcciones IP A, B, C, D y E. También describe los métodos de transmisión unicast, multicast y broadcast, explicando cómo un paquete de datos se envía a un solo host, múltiples hosts o a todos los hosts en una red.
Este documento explica cómo crear y configurar máquinas virtuales en Hyper-V. Detalla los pasos para crear una nueva máquina virtual usando el Asistente para nueva máquina virtual, y cómo personalizar una máquina virtual existente modificando opciones como hardware virtual, discos duros y configuración de BIOS. También cubre cómo administrar redes y carpetas compartidas para máquinas virtuales, e instalar el adaptador de bucle invertido de Microsoft para ampliar las capacidades de red.
Este documento describe la configuración avanzada de red en Xen, incluyendo los modos de red como bridging, NAT y routing. Explica que la configuración de red se realiza en el archivo xend-config.sxp y cómo funciona específicamente el modo de bridge, creando un puente que conecta la interfaz física y las virtuales de los dominios.
Este documento describe cómo configurar un servidor DHCP para proporcionar direcciones IP a clientes en diferentes VLAN en OpenBSD 4.5. Explica cómo crear las VLAN en el switch y servidor, y cómo configurar el servidor DHCP para escuchar solicitudes en cada interfaz VLAN y asignar rangos de direcciones IP. Finalmente, prueba la configuración comprobando que un cliente obtiene correctamente una dirección IP al solicitarla.
Esta presentación fue utilizada en la charla "Tecnologías de Seguridad en Switches", impartida en las Jornadas de Seguridad Informática organizadas por GSIC en A Coruña en febrero de 2012
El documento describe el protocolo HTTP, incluyendo sus elementos, mensajes de petición y respuesta, códigos de estado, negociación de contenidos, conexiones persistentes y otras características. Explica que HTTP es un protocolo sin estado que funciona sobre TCP y que Apache es el servidor web HTTP más utilizado, siendo software libre y multiplataforma.
Este documento describe sockets y threads en Java. Explica qué es un socket y los tipos de sockets orientados y no orientados a conexión. Detalla las clases Socket, ServerSocket y DatagramSocket y sus métodos para la comunicación cliente-servidor. También explica qué es un thread, sus atributos y estados, y la clase Thread. Por último, presenta un ejemplo de chat que utiliza sockets y threads para la comunicación entre clientes a través de un servidor.
Este documento describe ZooKeeper, un servicio de coordinación para aplicaciones distribuidas. ZooKeeper permite que los procesos distribuidos se coordinen a través de un espacio de nombres jerárquico compartido. Proporciona servicios como administración de configuración, bloqueos, sincronización y grupos de servicios. Los desarrolladores pueden usar ZooKeeper en lugar de tener que escribir su propia lógica de coordinación distribuida.
Este documento describe los tipos y clases de direcciones IP. Explica las direcciones IP públicas y privadas, y las clases de direcciones IP A, B, C, D y E. También describe los métodos de transmisión unicast, multicast y broadcast, explicando cómo un paquete de datos se envía a un solo host, múltiples hosts o a todos los hosts en una red.
Este documento explica cómo crear y configurar máquinas virtuales en Hyper-V. Detalla los pasos para crear una nueva máquina virtual usando el Asistente para nueva máquina virtual, y cómo personalizar una máquina virtual existente modificando opciones como hardware virtual, discos duros y configuración de BIOS. También cubre cómo administrar redes y carpetas compartidas para máquinas virtuales, e instalar el adaptador de bucle invertido de Microsoft para ampliar las capacidades de red.
Este documento describe la configuración avanzada de red en Xen, incluyendo los modos de red como bridging, NAT y routing. Explica que la configuración de red se realiza en el archivo xend-config.sxp y cómo funciona específicamente el modo de bridge, creando un puente que conecta la interfaz física y las virtuales de los dominios.
Este documento describe cómo configurar un servidor DHCP para proporcionar direcciones IP a clientes en diferentes VLAN en OpenBSD 4.5. Explica cómo crear las VLAN en el switch y servidor, y cómo configurar el servidor DHCP para escuchar solicitudes en cada interfaz VLAN y asignar rangos de direcciones IP. Finalmente, prueba la configuración comprobando que un cliente obtiene correctamente una dirección IP al solicitarla.
Esta presentación fue utilizada en la charla "Tecnologías de Seguridad en Switches", impartida en las Jornadas de Seguridad Informática organizadas por GSIC en A Coruña en febrero de 2012
El documento describe el protocolo HTTP, incluyendo sus elementos, mensajes de petición y respuesta, códigos de estado, negociación de contenidos, conexiones persistentes y otras características. Explica que HTTP es un protocolo sin estado que funciona sobre TCP y que Apache es el servidor web HTTP más utilizado, siendo software libre y multiplataforma.
Este documento resume las experiencias de padres con hijos que tienen necesidades especiales. Explica que recibir un diagnóstico puede ser abrumador y hacer que los padres se sientan solos y desorientados. Describe un programa de apoyo que ofrece a los padres recién diagnosticados la oportunidad de hablar con otros padres experimentados. El objetivo es transmitir su experiencia y apoyo emocional para ayudar a los padres a enfrentar esta nueva realidad.
Este documento explica qué es RMI (Invocación de Métodos Remotos) en Java y provee un ejemplo sencillo de su implementación. RMI permite que un programa Java invoque métodos de objetos que se ejecutan en otro equipo de forma remota. El ejemplo consiste en un servidor y un cliente: el servidor exporta un objeto que recibe mensajes, y el cliente puede enviar mensajes al servidor invocando el método remoto de ese objeto.
El documento presenta una introducción al manejo de excepciones en C#. Explica que las excepciones capturan errores para evitar inestabilidad. Usa try-catch para capturar excepciones dentro de bloques de código y finally para código que siempre se ejecuta. También cubre cómo lanzar excepciones usando throw y las normas para el tratamiento de excepciones. Por último, propone un proyecto de calculadora científica que usa funciones matemáticas y manejo de excepciones.
1) El documento cubre las sentencias if-else y switch en Java, incluyendo expresiones legales y formas de usar asignaciones. 2) También explica los diferentes tipos de ciclos como while, do-while y for, así como etiquetas como break y continue. 3) Finalmente, cubre el manejo de excepciones mediante el uso de bloques try-catch-finally y la propagación y jerarquía de excepciones en Java.
Este documento describe el uso de RMI (Remote Method Invocation) para implementar un sistema distribuido de bibliotecas en Java. RMI permite invocar métodos de objetos remotos de forma sencilla. Se explican los conceptos clave de RMI como stubs, skeletons y capas de arquitectura. También se mencionan las clases, métodos y herramientas de Java necesarias para usar RMI como rmiregistry.
El documento habla sobre excepciones en Java. Explica que una excepción es un evento anormal que ocurre durante la ejecución de un programa y que Java permite capturar excepciones para que el programa pueda recuperarse de estas situaciones. También distingue entre excepciones marcadas y no marcadas, y describe cómo usar los bloques try-catch-finally para capturar excepciones de manera estructurada.
La recursividad es una técnica de programación donde una función se llama a sí misma de forma repetida hasta alcanzar una condición de parada. La recursividad requiere una condición para terminar las llamadas recursivas y las llamadas se van acumulando en memoria hasta alcanzar la condición de parada.
El documento habla sobre ficheros en Java. Explica que para almacenar datos de forma permanente se deben guardar en dispositivos como el disco duro usando flujos de entrada y salida. También menciona el paquete java.io que contiene las clases para trabajar con ficheros en Java.
La programación orientada a objetos modela el desarrollo de aplicaciones como cosas del mundo real mediante el uso de clases que definen atributos (características) y métodos (comportamiento), y los objetos son la instanciación de las clases. En Java existe herencia simple que permite extender las características de una clase padre.
El documento habla sobre la gestión de excepciones en Java. Explica que una excepción es una situación inusual que sale del flujo normal de un programa. Describe que Java usa las instrucciones try y catch para manejar excepciones, donde try contiene el código normal y catch captura las excepciones específicas. También menciona la instrucción throws para declarar las excepciones lanzadas por un método.
Un arreglo en Java es una estructura de datos compuesta que almacena un conjunto de datos del mismo tipo utilizando índices para acceder a ellos. Los arreglos permiten realizar operaciones como insertar, modificar, eliminar, ordenar y buscar datos para gestionar la información de forma estática.
Desarrollo aplicaciones distribuidas socketsdandark2000
1) Un socket es un punto final de comunicación entre dos programas a través de una red. 2) Los sockets permiten establecer conexiones orientadas a conexión usando TCP o no orientadas a conexión usando UDP. 3) En Java, las clases Socket, ServerSocket y DatagramSocket representan sockets y permiten la comunicación cliente-servidor.
El documento describe los sockets en Java y las clases relacionadas con la comunicación en red. Explica que Java.net proporciona clases como Socket, ServerSocket y DatagramSocket que permiten la comunicación TCP/IP de forma independiente de la plataforma. También describe brevemente DatagramPacket y cómo se usan junto con DatagramSocket para comunicación sin conexión mediante UDP.
El documento habla sobre sockets TCP/IP y la clase Socket en Java. Explica que un socket se define por una dirección IP local y remota, un protocolo de transporte y números de puerto. También describe cómo la clase Socket en Java oculta la complejidad de establecer conexiones de red y enviar datos a través de ellas, proporcionando una interfaz similar a trabajar con archivos. Además, incluye un ejemplo de código Java que implementa un cliente que se conecta a un servidor para obtener la fecha y hora.
El documento describe el protocolo UDP en Java. UDP es un protocolo no orientado a conexión que permite el envío de datagramas a través de una red sin establecer una conexión previa. Java proporciona las clases DatagramSocket y DatagramPacket para el envío y recepción de datagramas UDP. Los programas cliente envían datagramas utilizando DatagramSocket.send() mientras que los programas servidor los reciben con DatagramSocket.receive().
El documento describe varios mecanismos de comunicación entre procesos en Java, incluyendo sockets TCP y UDP, multicast, URLs y RMI. Los sockets TCP son orientados a conexión mientras que los sockets UDP permiten el envío asíncrono de mensajes. La clase URL encapsula la conexión TCP. RMI permite la invocación remota de operaciones para desarrollar sistemas distribuidos.
El documento describe los sockets TCP/IP, que permiten a dos programas intercambiar datos de forma fiable y ordenada a través de una conexión de red. Explica que un socket está definido por una dirección IP, puerto, protocolo de transporte y que la clase Socket de Java facilita el establecimiento de conexiones y envío de datos a través de la red. Finalmente, incluye un ejemplo de un cliente Java que obtiene la hora del servidor local a través de un socket.
C documents and settings_pc10_configuración local_datos de programa_mozilla_...ORLANDO LOPEZ
Este documento proporciona una introducción al uso de sockets en Windows para la comunicación entre procesos. Explica brevemente qué son los sockets, los dos tipos principales de comunicación (servidor serial y concurrente), y presenta el algoritmo básico para clientes y servidores. Además, describe algunas funciones clave como socket(), bind(), listen(), accept(), connect(), send() y recv() que se utilizan para establecer la conexión y enviar/recibir datos. El objetivo es servir como punto de partida para aquellos interesados en aprender sobre sockets en C
LAN Switching and Wirelless conceptos básicos y configuracion del witchFredPincay
Este documento proporciona una introducción a los conceptos básicos de los switches de red, incluida la tecnología Ethernet subyacente, los tipos de comunicaciones, la estructura de las tramas, y la configuración básica de los switches. También describe conceptos como el direccionamiento MAC, las tablas de direcciones MAC, los dominios de broadcast y colisiones, y las consideraciones de diseño para controlar la latencia y evitar cuellos de botella. Por último, cubre temas de seguridad como el snooping DHCP, los ataques comunes y
Este documento describe la utilidad de JDBC para conectarse a bases de datos desde Java usando SQL. JDBC permite que una aplicación Java se conecte a diferentes bases de datos y las trate de forma uniforme. JDBC consta de dos capas: la capa de aplicación que contiene las clases para interactuar con la base de datos, y la capa de controlador que se encarga de establecer la comunicación con el RDBMS.
Este documento resume los conceptos básicos de redes locales (LAN) y ad-hoc, y explica cómo montar una red básica mediante el cableado, un router y un switch. Detalla los pasos para crear un cable RJ-45 y configurar un router ZyXEL, incluyendo la configuración de DHCP, LAN, WLAN, NAT y seguridad. Finalmente, menciona el uso de DNS dinámico para permitir conexiones remotas a la red local.
Este documento resume las experiencias de padres con hijos que tienen necesidades especiales. Explica que recibir un diagnóstico puede ser abrumador y hacer que los padres se sientan solos y desorientados. Describe un programa de apoyo que ofrece a los padres recién diagnosticados la oportunidad de hablar con otros padres experimentados. El objetivo es transmitir su experiencia y apoyo emocional para ayudar a los padres a enfrentar esta nueva realidad.
Este documento explica qué es RMI (Invocación de Métodos Remotos) en Java y provee un ejemplo sencillo de su implementación. RMI permite que un programa Java invoque métodos de objetos que se ejecutan en otro equipo de forma remota. El ejemplo consiste en un servidor y un cliente: el servidor exporta un objeto que recibe mensajes, y el cliente puede enviar mensajes al servidor invocando el método remoto de ese objeto.
El documento presenta una introducción al manejo de excepciones en C#. Explica que las excepciones capturan errores para evitar inestabilidad. Usa try-catch para capturar excepciones dentro de bloques de código y finally para código que siempre se ejecuta. También cubre cómo lanzar excepciones usando throw y las normas para el tratamiento de excepciones. Por último, propone un proyecto de calculadora científica que usa funciones matemáticas y manejo de excepciones.
1) El documento cubre las sentencias if-else y switch en Java, incluyendo expresiones legales y formas de usar asignaciones. 2) También explica los diferentes tipos de ciclos como while, do-while y for, así como etiquetas como break y continue. 3) Finalmente, cubre el manejo de excepciones mediante el uso de bloques try-catch-finally y la propagación y jerarquía de excepciones en Java.
Este documento describe el uso de RMI (Remote Method Invocation) para implementar un sistema distribuido de bibliotecas en Java. RMI permite invocar métodos de objetos remotos de forma sencilla. Se explican los conceptos clave de RMI como stubs, skeletons y capas de arquitectura. También se mencionan las clases, métodos y herramientas de Java necesarias para usar RMI como rmiregistry.
El documento habla sobre excepciones en Java. Explica que una excepción es un evento anormal que ocurre durante la ejecución de un programa y que Java permite capturar excepciones para que el programa pueda recuperarse de estas situaciones. También distingue entre excepciones marcadas y no marcadas, y describe cómo usar los bloques try-catch-finally para capturar excepciones de manera estructurada.
La recursividad es una técnica de programación donde una función se llama a sí misma de forma repetida hasta alcanzar una condición de parada. La recursividad requiere una condición para terminar las llamadas recursivas y las llamadas se van acumulando en memoria hasta alcanzar la condición de parada.
El documento habla sobre ficheros en Java. Explica que para almacenar datos de forma permanente se deben guardar en dispositivos como el disco duro usando flujos de entrada y salida. También menciona el paquete java.io que contiene las clases para trabajar con ficheros en Java.
La programación orientada a objetos modela el desarrollo de aplicaciones como cosas del mundo real mediante el uso de clases que definen atributos (características) y métodos (comportamiento), y los objetos son la instanciación de las clases. En Java existe herencia simple que permite extender las características de una clase padre.
El documento habla sobre la gestión de excepciones en Java. Explica que una excepción es una situación inusual que sale del flujo normal de un programa. Describe que Java usa las instrucciones try y catch para manejar excepciones, donde try contiene el código normal y catch captura las excepciones específicas. También menciona la instrucción throws para declarar las excepciones lanzadas por un método.
Un arreglo en Java es una estructura de datos compuesta que almacena un conjunto de datos del mismo tipo utilizando índices para acceder a ellos. Los arreglos permiten realizar operaciones como insertar, modificar, eliminar, ordenar y buscar datos para gestionar la información de forma estática.
Desarrollo aplicaciones distribuidas socketsdandark2000
1) Un socket es un punto final de comunicación entre dos programas a través de una red. 2) Los sockets permiten establecer conexiones orientadas a conexión usando TCP o no orientadas a conexión usando UDP. 3) En Java, las clases Socket, ServerSocket y DatagramSocket representan sockets y permiten la comunicación cliente-servidor.
El documento describe los sockets en Java y las clases relacionadas con la comunicación en red. Explica que Java.net proporciona clases como Socket, ServerSocket y DatagramSocket que permiten la comunicación TCP/IP de forma independiente de la plataforma. También describe brevemente DatagramPacket y cómo se usan junto con DatagramSocket para comunicación sin conexión mediante UDP.
El documento habla sobre sockets TCP/IP y la clase Socket en Java. Explica que un socket se define por una dirección IP local y remota, un protocolo de transporte y números de puerto. También describe cómo la clase Socket en Java oculta la complejidad de establecer conexiones de red y enviar datos a través de ellas, proporcionando una interfaz similar a trabajar con archivos. Además, incluye un ejemplo de código Java que implementa un cliente que se conecta a un servidor para obtener la fecha y hora.
El documento describe el protocolo UDP en Java. UDP es un protocolo no orientado a conexión que permite el envío de datagramas a través de una red sin establecer una conexión previa. Java proporciona las clases DatagramSocket y DatagramPacket para el envío y recepción de datagramas UDP. Los programas cliente envían datagramas utilizando DatagramSocket.send() mientras que los programas servidor los reciben con DatagramSocket.receive().
El documento describe varios mecanismos de comunicación entre procesos en Java, incluyendo sockets TCP y UDP, multicast, URLs y RMI. Los sockets TCP son orientados a conexión mientras que los sockets UDP permiten el envío asíncrono de mensajes. La clase URL encapsula la conexión TCP. RMI permite la invocación remota de operaciones para desarrollar sistemas distribuidos.
El documento describe los sockets TCP/IP, que permiten a dos programas intercambiar datos de forma fiable y ordenada a través de una conexión de red. Explica que un socket está definido por una dirección IP, puerto, protocolo de transporte y que la clase Socket de Java facilita el establecimiento de conexiones y envío de datos a través de la red. Finalmente, incluye un ejemplo de un cliente Java que obtiene la hora del servidor local a través de un socket.
C documents and settings_pc10_configuración local_datos de programa_mozilla_...ORLANDO LOPEZ
Este documento proporciona una introducción al uso de sockets en Windows para la comunicación entre procesos. Explica brevemente qué son los sockets, los dos tipos principales de comunicación (servidor serial y concurrente), y presenta el algoritmo básico para clientes y servidores. Además, describe algunas funciones clave como socket(), bind(), listen(), accept(), connect(), send() y recv() que se utilizan para establecer la conexión y enviar/recibir datos. El objetivo es servir como punto de partida para aquellos interesados en aprender sobre sockets en C
LAN Switching and Wirelless conceptos básicos y configuracion del witchFredPincay
Este documento proporciona una introducción a los conceptos básicos de los switches de red, incluida la tecnología Ethernet subyacente, los tipos de comunicaciones, la estructura de las tramas, y la configuración básica de los switches. También describe conceptos como el direccionamiento MAC, las tablas de direcciones MAC, los dominios de broadcast y colisiones, y las consideraciones de diseño para controlar la latencia y evitar cuellos de botella. Por último, cubre temas de seguridad como el snooping DHCP, los ataques comunes y
Este documento describe la utilidad de JDBC para conectarse a bases de datos desde Java usando SQL. JDBC permite que una aplicación Java se conecte a diferentes bases de datos y las trate de forma uniforme. JDBC consta de dos capas: la capa de aplicación que contiene las clases para interactuar con la base de datos, y la capa de controlador que se encarga de establecer la comunicación con el RDBMS.
Este documento resume los conceptos básicos de redes locales (LAN) y ad-hoc, y explica cómo montar una red básica mediante el cableado, un router y un switch. Detalla los pasos para crear un cable RJ-45 y configurar un router ZyXEL, incluyendo la configuración de DHCP, LAN, WLAN, NAT y seguridad. Finalmente, menciona el uso de DNS dinámico para permitir conexiones remotas a la red local.
Desarrollando aplicaciones de red con Twistedjjconti
Este documento presenta una introducción a Twisted, un framework para desarrollar aplicaciones de red en Python. Explica conceptos clave como reactor, deferreds, protocolos, transportes y fábricas. Detalla cómo escribir servidores y clientes TCP y UDP así como ejemplos de su uso para programación asíncrona y no bloqueante.
El documento proporciona instrucciones para configurar una red mesh utilizando Cloud-Mesh. Explica cómo instalar Cloud-Mesh en un enrutador Bullet, acceder al enrutador a través de SSH, y usar un script de configuración para cambiar la configuración básica como los nombres de las redes, configurar el tráfico shaping, el portal cautivo y el servidor de visualización.
El documento describe los sockets, que son métodos para la comunicación entre programas cliente y servidor en una red. Explica que los sockets permiten que dos procesos intercambien información a través de peticiones y respuestas. También describe los diferentes tipos de sockets orientados a conexión y no conexión, así como varios sockets históricos como el Socket 7 y Socket 478 utilizados para procesadores Intel y AMD. Finalmente, enumera muchos sockets específicos e historia de su uso.
Este documento presenta información sobre un curso de Certified Penetration Testing Engineer (CPTE) ofrecido por la compañía Open-Sec. El curso dura 5 días e incluye información sobre los 5 elementos clave del penetration testing: obtención de información, escaneo, enumeración, explotación y reporte. Los graduados del curso aprenderán habilidades de ethical hacking a nivel profesional y podrán certificarse como CPTE u otros certificados como CEH o CPEH.
Este documento describe el funcionamiento de los sockets en Java para la comunicación entre procesos. Explica que los sockets permiten que procesos se comuniquen a través de redes, incluso en máquinas diferentes. Luego presenta ejemplos de código de un servidor y cliente de sockets en Java, donde el servidor escucha en un puerto para conexiones entrantes y puede comunicarse con múltiples clientes de forma concurrente. Finalmente, muestra la ejecución del programa donde el servidor recibe y muestra mensajes de los clientes hasta recibir la palabra "
1) Los sistemas operativos modernos tratan las unidades de recursos (procesos) e unidades de despacho (hilos) de forma independiente, donde los procesos son unidades de recursos y los hilos son unidades de despacho.
2) Los procesos son pesados y comparten recursos, mientras que los hilos son livianos, existen varios por proceso, y comparten los recursos del proceso.
3) Los hilos comparten el código, datos y recursos de un proceso, y son baratos de crear y gestionar en comparación con los pro
Este documento describe los sockets cliente-servidor y cómo funcionan las comunicaciones entre ellos. Los sockets permiten que los procesos se comuniquen transmitiendo mensajes entre sí a través de conexiones establecidas. Existen diferentes tipos de sockets como SOCK_DGRAM para comunicaciones no conectadas a través de UDP y SOCK_STREAM para comunicaciones fiables conectadas a través de TCP. El proceso de establecer una conexión implica que el servidor cree un socket con nombre y espere la conexión del cliente, luego el cliente cree un socket sin nombre y se conecte al socket del serv
Este documento describe los sockets cliente-servidor y cómo funcionan las comunicaciones entre ellos. Los sockets permiten que los procesos se comuniquen transmitiendo mensajes entre sí a través de conexiones establecidas mediante protocolos como TCP/IP. Existen diferentes tipos de sockets como SOCK_DGRAM para comunicaciones no conectadas a través de UDP y SOCK_STREAM para comunicaciones fiables mediante TCP. El proceso de establecer una conexión implica que el servidor cree un socket con nombre y espere la conexión del cliente, mientras que el cliente crea un socket sin nombre y se cone
Este documento describe cómo configurar la replicación de datos entre un nodo maestro y un nodo esclavo utilizando PostgreSQL y la herramienta de replicación Slony-I en Windows. Los pasos incluyen instalar PostgreSQL y Slony-I, crear las bases de datos maestra y esclava, configurar pg_hba.conf y crear scripts de Slony para definir el cluster de replicación y las tablas a replicar. Una vez ejecutados los scripts en los nodos maestro y esclavo, la replicación se habilita de forma asíncrona para mant
Este documento describe cómo configurar la replicación de datos entre un nodo maestro y un nodo esclavo utilizando PostgreSQL y la herramienta de replicación Slony-I en Windows. Los pasos incluyen instalar PostgreSQL y Slony-I, crear las bases de datos en ambos nodos, configurar pg_hba.conf y firewall para permitir la conexión, crear scripts de Slony para definir la replicación, y ejecutar los scripts en cada nodo para iniciar la replicación de datos.
3. Qué es un socket?
• Definición: Un socket es un punto final de un
enlace de comunicación de dos vías entre dos
programas que se ejecutan a través de la red.
• El cliente y el servidor deben ponerse de
acuerdo sobre el protocolo que utilizarán.
4. Tipos de socket
• Hay dos tipos de socket:
– Orientado a conexión:
• Establece un camino virtual entre servidor y cliente, fiable, sin
pérdidas de información ni duplicados, la información llega en
el mismo orden que se envía.
• El cliente abre una sesión en el servidor y este guarda un estado
del cliente.
– El cliente utiliza la clase Socket
– El servidor utiliza la clase ServerSocket
5. Tipos de socket
– No orientado a conexión:
• Envío de datagramas de tamaño fijo. No es fiable, puede
haber pérdidas de información y duplicados, y la información
puede llegar en distinto orden del que se envía.
• No se guarda ningún estado del cliente en el servidor, por ello,
es más tolerante a fallos del sistema.
– Tanto el cliente como el servidor utilizan la clase
DatagramSocket.
• Todas estas clases (Socket, ServerSocket y
DatagramSocket) se encuentran en el paquete java.net
6. Clase Socket
• Constructores:
– public Socket ()
– public Socket (InetAddress address, int port)
– public Socket (String host, int port)
– public Socket (InetAddress address, int port, InetAddress localAddr, int localPort)
– public Socket (String host, int port, InetAddress localAddr, int localPort)
• address / localAddr: dirección IP de la máquina remota / local.
• port / localPort: puerto de la máquina remota / local.
• host: nombre de la máquina remota
• En el caso del primer constructor crea un socket sin conexión.
7. Servicios de la clase Socket
– public InetAddress getInetAddress():
• Devuelve la dirección IP de la máquina en la que estamos conectados.
– public int getPort():
• Devuelve el puerto de la máquina remota.
– public void close()
• Cierra el canal de comunicación.
– public InputStream getInputStream():
• Devuelve el canal de lectura del socket.
– public OutputStream getOutputStream():
• Devuelve el canal de escritura del socket.
• Ademas JAVA proporciona dos llamadas para saber la
@IP y puerto local (getLocalAddress() y getLocalPort())
8. Clase ServerSocket
• Constructores:
– public ServerSocket (int port)
– public ServerSocket (int port, int backlog)
– public ServerSocket (int port, int backlog, InetAddress bindAddr)
• port: puerto de la máquina servidora.
• backlog: tamaño de la cola de espera, en el primero es 50.
• bindAddr: dirección IP local que se hará pública mediante el bind.
• El constructor ServerSocket se encarga de hacer el bind y
el listen.
9. Servicios de la clase
ServerSocket
– public Socket accept():
• Devuelve el socket resultado de aceptar una petición, para llevar a
cabo la comunicación con el cliente.
– public void close()
• Cierra el canal de comunicación.
– public InetAddress getInetAddress():
• Devuelve la dirección IP de la máquina local.
– public int getLocalPort():
• Devuelve el puerto de la máquina local.
10. Comunicación entre cliente-servidor
• Para la transmisión de datos entre cliente y servidor se
utilizarán las clases DataInputStream (recibir datos) y
DataOutputStream (enviar datos)
• Estas clases disponen de métodos para leer y escribir datos
en el socket:
– read/writeBoolean
– read/writeChar
– read/writeDouble, read/writeFloat, read/writeInt, read/writeLong,
read/writeShort
– read/writeUTF (leer/escribir cadenas de caracteres)
• Para envíar los datos se utiliza el método flush() de la clase
DataOutputStream.
11. Clase DatagramSocket
• Constructores:
– public DatagramSocket ()
– public DatagramSocket (int port)
– public DatagramSocket (int port, InetAddress laddr)
• port: puerto de la máquina.
• laddr: dirección IP local que se hará pública mediante el bind.
• El constructor DatagramSocket se encarga de hacer el
bind.
• El primer constructor coge un puerto libre.
12. Servicios de la clase
DatagramSocket
– public void connect(InetAddress address, int port):
• Conecta el socket a la máquina remota con la @IP address y puerto
port.
– public void close()
• Cierra el canal de comunicación.
– public void disconnect():
• Desconecta el socket.
– public InetAddress getInetAddress():
• Devuelve la @IP de la máquina remota.
– public int getPort():
• Devuelve el puerto de la máquina remota.
• Tambien hay dos llamadas para saber la @IP y puerto local
(getLocalAddress() y getLocalPort()).
13. Servicios de la clase
DatagramSocket
– public void send(DatagramPacket p):
• Envía un datagrama a la máquina remota, por el socket asociado.
– public void receive(DatagramPacket p):
• Recibe un datagrama de otra máquina, por el socket asociado.
14. Clase DatagramPacket
• Constructores:
– public DatagramPacket (byte[] buff, int length)
• Construye un DatagramPacket para recibir paquetes en el
buffer buff, de longitud length
– public DatagramPacket (byte[] buff, int length, InetAddress address, int port)
• Construye un DatagramPacket para envíar paquetes con datos
del buffer buff, de longitud length, a la @IP address y el
puerto port.
• Servicios:
– Para la actualización y consulta de los diferentes campos de un
DatagramPacket disponemos de los siguientes métodos: set/getAddress,
set/getData, set/getLength, set/getPort
16. Qué es un thread?
• Definición: Un thread es un flujo secuencial de
control dentro de un programa.
• Está definido por un contador de programa (PC) y
un puntero a la pila (SP)
• Un thread no puede ejecutarse por sí mismo, ha de
hacerlo dentro de un programa.
• Todos los threads de un proceso comparten los
recursos (Ej: canales E/S, memoria, ...)
17. Qué ganamos?
• Conseguimos concurrencia entre procesos y
también dentro de un mismo proceso.
• También podemos conseguir paralelismo si
disponemos de una arquitectura multiprocesador.
• El cambio de contexto entre threads no es tan
costoso al sistema como el cambio de contexto
entre procesos.
18. Atributos de un thread en JAVA
• Un thread tiene:
– Nombre
– Prioridad
• Ha de seguir la siguiente relación:
– MIN_PRIORITY <= Prioridad <= MAX_PRIORITY
– La prioridad por defecto es NORM_PRIORITY
• Valores:
– MIN_PRIORITY = 1
– NORM_PRIORITY = 5
– MAX_PRIORITY = 10
19. Clase Thread
• Constructores:
– public Thread ()
• Crea un thread estándar.
– public Thread (Runnable target)
• Crea un thread en base a una clase que implementa la interfaz
Runnable.
– public Thread (Runnable target, String name)
• Equivalente al anterior constructor dándole el nombre name al
thread.
– public Thread (String name)
• Crea un thread estándar con el nombre name.
20. Clase Thread
– public Thread (ThreadGroup group, Runnable target)
• Crea un thread en base a una clase que implementa la interfaz
Runnable dentro del ThreadGroup.
– public Thread (ThreadGroup group, Runnable target, String name)
• Equivalente al anterior constructor dándole el nombre name
al thread.
– public Thread (ThreadGroup group, String name)
• Crea un thread estándar con el nombre name dentro del
ThreadGroup
• Cuando se crea un thread no se pone en marcha, se lo hemos de
indicar explícitamente.
• Un ThreadGroup es un conjunto de threads, los cuales tienen acceso
a información entre ellos.
21. Servicios de la clase Thread
– public String getName ():
• Devuelve el nombre que identifica al thread.
– public String setName (String name):
• Cambia el nombre del thread.
– public int getPriority()
• Devuelve la prioridad del thread.
– public void setPriority(int newPriority)
• Cambia la prioridad del thread
– public ThreadGroup getThreadGroup():
• Devuelve el grupo de donde procede el thread.
22. Servicios de la clase Thread
– void run()
• Es el método que ejecutará un thread cuando este se ponga en
marcha.
– void start()
• Inicia la ejecución del thread.
– void join()
• Espera a que un thread termine su ejecución.
• Podemos especificar el tiempo de espera máximo.
– void sleep(long milis)
• Bloquea el thread milis milisegundos.
• Hay otro parámetro que permite afinar más el tiempo de bloqueo en
nanosegundos.
23. Servicios de la clase Thread
– void stop/destroy()
• Destruye el thread sin eliminar estructuras, esto es tarea del método join.
– static Thread currentThread()
• Devuelve el thread que se está ejecutando actualmente.
– boolean isAlive()
• Mira si un thread no ha terminado su ejecución
– static void yield()
• Provoca el cambio de contexto entre flujos.
25. Sincronización
• Aquí se presenta el problema de que varios threads
intenten acceder a los mismos datos y que el
resultado final sea incorrecto.
– Por ejemplo: Acceso a una variable global x con valor
inicial 0, y dos threads que intentan incrementar su valor
en una unidad.
– Si los threads no están sincronizados un resultado
posible sería que la variable x tenga el valor 1
(incorrecto)
26. Sincronización
• Solución: Para resolver el problema anterior se
utiliza la etiqueta synchronized junto con el
objeto que se quiere sincronizar.
– En el caso anterior se solucionaría de la siguiente
forma:
• synchronized (this) { x++; }
– this es la clase que contiene la variable global
– Con esto se garantiza el acceso en exclusión mutua.
27. Sincronización
• Si queremos acceder a un método en exclusión
mutua tenemos las siguientes opciones:
– Igual que el ejemplo anterior:
• synchronized (this) { this.incrementar() }
– Declarando el método como sincronizado:
• synchronized void incrementar ()
• También se pueden sincronizar varios threads
mediante los métodos: wait(), notify() y notifyAll()
40. Bibliografía
• Dossier de la asignatura CASO
• “JAVA El lenguaje de programación de Internet”
Ed.Data Becker 1995
• Tutoriales de JAVA extraídos de:
– http://fibers.upc.es/pages/tutorials.php
• API de JAVA versión 1.3