Docsity
Docsity

Prepara tus exámenes
Prepara tus exámenes

Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity


Consigue puntos base para descargar
Consigue puntos base para descargar

Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium


Orientación Universidad
Orientación Universidad

Foro unidad 4 Desarrollo de Aplicaciones, Apuntes de Desarrollo de Software

Foro unidad 4 Desarrollo de Aplicaciones

Tipo: Apuntes

2019/2020

Subido el 20/02/2020

roberto-ivan-santiago-hernandez
roberto-ivan-santiago-hernandez 🇲🇽

5

(3)

5 documentos

1 / 13

Toggle sidebar

Esta página no es visible en la vista previa

¡No te pierdas las partes importantes!

bg1
UNIDAD IV. MODELO
CLIENTE-SERVIDOR
Foro U4
ROBERTO IVAN SANTIAGO HERNANDEZ
MATRICULA: A0123111915
pf3
pf4
pf5
pf8
pf9
pfa
pfd

Vista previa parcial del texto

¡Descarga Foro unidad 4 Desarrollo de Aplicaciones y más Apuntes en PDF de Desarrollo de Software solo en Docsity!

UNIDAD IV. MODELO

CLIENTE-SERVIDOR

Foro U

ROBERTO IVAN SANTIAGO HERNANDEZ

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.