







Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Prepara tus exámenes
Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Prepara tus exámenes con los documentos que comparten otros estudiantes como tú en Docsity
Los mejores documentos en venta realizados por estudiantes que han terminado sus estudios
Estudia con lecciones y exámenes resueltos basados en los programas académicos de las mejores universidades
Responde a preguntas de exámenes reales y pon a prueba tu preparación
Consigue puntos base para descargar
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Comunidad
Pide ayuda a la comunidad y resuelve tus dudas de estudio
Descubre las mejores universidades de tu país según los usuarios de Docsity
Ebooks gratuitos
Descarga nuestras guías gratuitas sobre técnicas de estudio, métodos para controlar la ansiedad y consejos para la tesis preparadas por los tutores de Docsity
Foro unidad 4 Desarrollo de Aplicaciones
Tipo: Apuntes
1 / 13
Esta página no es visible en la vista previa
¡No te pierdas las partes importantes!
MATRICULA: A
A partir de los contenidos de la unidad responde: Aspecto 1: ¿Cuál es la importancia del uso de los sockets en el entorno laboral? Un socket (enchufe), es un método para la comunicación entre un programa del cliente y un programa del servidor en una red. Un socket se define como el punto final en una conexión. Los sockets se crean y se utilizan con un sistema de peticiones o de llamadas de función a veces llamados interfaz de programación de aplicación de sockets (API, application programming interface). Un socket es también una dirección de Internet, combinando una dirección IP (la dirección numérica única de cuatro partes que identifica a un ordenador particular en Internet) y un número de puerto (el número que identifica una aplicación de Internet particular, como FTP, Gopher, o WWW). En programación los sockets tienen mucha importancia debido a su uso extendido. A través de ellos y en conjunto con un patrón de diseño podemos implementar un servicio web robusto y extensible, como lo es el caso de un Bróker. Diferencias entre Sockets y Tuberías Una tubería es básicamente un espacio de memoria compartida entre procesos a los cuales se accede de manera ordenada dentro de una misma computadora. Los sockets a diferencia de las tuberías (Pipes) transmiten información sin importar si los procesos en los cuales se alojan se encuentran o no dentro de la misma computadora. Programación de los sockets Un socket se conecta configurando lo siguiente: Host: es una dirección única dentro de la red donde se encuentra el proceso a conectar. Numero de puerto: Número que identifica a la aplicación dentro de una computadora conectada a la red. Dos sockets no pueden enviar o recibir información por el mismo puerto al mismo tiempo dentro de un mismo SO, sin que uno sea Cliente y el otro el Servidor. Flujo de entrada y salida: mediante estos flujos se puede enviar y recibir información como una secuencia de bytes o caracteres una vez que el socket esté conectado y haya sido abierto. Bloqueante/No Bloqueante: Los sockets por defecto son bloqueantes, es decir bloquean el proceso donde se encuentran alojados hasta que la información sea enviada o recibida por completo. En muchas ocasiones es posible configurar esta característica, sin embargo esto no garantiza que la información sea enviada o recibida totalmente. Por ejemplo si un socket es configurado para no ser bloqueante e intenta enviar muchos bytes de información. El socket escribirá tantos bytes como le sea
import java.net.Socket; public class Cliente { private Socket s; public Cliente(String servidor, int puerto, String archivo) { try { s = new Socket(servidor, puerto); EnviaArchivo(archivo); } catch (Exception e) { //e.printStackTrace(); System.out.println("El sistema no puede encontrar el archivo especificado, intente de nuevo."); } } public void EnviaArchivo(String archivo) throws IOException { DataOutputStream dos = new DataOutputStream(s.getOutputStream()); FileInputStream fis = new FileInputStream(archivo); byte[] buffer = new byte[4096]; System.out.println("Enviando " + archivo); while (fis.read(buffer) > 0) { dos.write(buffer); }
fis.close(); dos.close(); } public static void main(String[] args) { Cliente fc = new Cliente("localhost", 1988, "C:\Users\ARYRI\Desktop\bd_controlfolos_v1_1909.sql"); } } Código Servidor: package csservidor; import java.io.DataInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.net.ServerSocket; import java.net.Socket; public class Servidor extends Thread { private ServerSocket ss; public Servidor(int puerto) {
int read = 0; int totalRead = 0; int remaining = filesize; while((read = dis.read(buffer, 0, Math.min(buffer.length, remaining))) > 0) { totalRead += read; remaining - = read; System.out.println("leyendo " + totalRead + " bytes."); fos.write(buffer, 0, read); } fos.close(); dis.close(); } public static void main(String[] args) { Servidor fs = new Servidor(1988); fs.start(); } } Para este ejercicio usaremos el Socket 1988, el cliente enviará un archivo al servidor, en el servidor el archivo se guardará con el nombre prueba.sql en la carpeta c:\ArchivosServidor, contenido antes de la ejecución del cliente
Aspecto 3: Resuelve el siguiente ejercicio relacionado con el lenguaje de programación orientada a objetos: Given public class TwoThreads { static Thread laurel, hardy; public static void main(String[] args) { laurel = new Thread() { public void run() { System.out.println("A"); try { hardy.sleep(1000); } catch (Exception e) { System.out.println("B"); } System.out.println("C"); } };
hardy = new Thread() { public void run() { System.out.println("D"); try { laurel.wait(); } catch (Exception e) { System.out.println("E"); } System.out.println("F"); } }; laurel.start(); hardy.start(); } } Which letters will eventually appear somewhere in the output? (Choose all that apply.) A. A B. B C. C D. D E. E F. F G. The answer cannot be reliably determined H. The code does not compile: La respuesta a este ejercicio es: Las letras que aparecen en el output son A, D, E, F, C.