CC52n Exámen Pregunta 1 Se pueden clasificar los sistemas de CSCW según 3 ejes: lugar, tiempo y orientación. Esto nos define 8 cuadrantes en donde pueden caer los sistemas. Dé 5 ejemplos de sistemas colaborativos y diga en qué cuadrante caen. Pregunta 2 Considere las siguientes situaciones para las cuales le solicitan desarrollar aplicaciones y diga en cuáles de ella usaría intercambio de información con conexión y en cuales sin conexión. Justifique su respuesta. - - Un programa que recibe como datos los valores de un conjunto de acciones transadas en la bolsa y los manda cada 10 segundos a una serie de clientes conectados con él. Los clientes pueden estar bastante lejos (no en la misma red) Un programa que transmite una sesión de video a clientes en una misma red. Un cleinte que sirve de servidor de comunicaciones para un chat entre varias personas que pueden estar localizadas en lugares remotos. Un programa que transmite e–mails de una máquina a otra. Pregunta 3 Usted sabe que una CPU de un sistema de multiprocesos, como es UNIX, debe realizar lo que se conoce como time sharing. Esto es, le asigna un tiempo de ejecución a cada proceso de modo que parezca al usuario que todo corren al mismo tiempo. El programa que realiza el time sharing se llama scheduler y es en realidad un servidor al cual los procesos, que son los clientes, le piden un servicio (tiempo de CPU para completar el trabajo). Imagine ahora que los procesos que piden tiempo de CPU están en otroas computadoras esparcidas por la red. ¿Qué beneficios y desventajas trae el hecho que el servidor guarde el estado de avance de todos los procesos clientes? Pregunta 4 ¿Que diferencias y similitudes encuentra entre CORMA y RMI? Pregunta 5 El profesor tiene cuenta corriente en un banco que ofrece hacer una serie de operaciones bancarias via WWW. Por ejemplo, el prof. consulta su estado de cuenta. El estado se entrega tal como si fuera una cartola, o sea la información es única para cada cliente. El profesor tiene serias sospechas que detrás hay algo que se vio en una charla. ¿Qué puede ser? Pregunta 6 Describa las ventajas y desventajas de usar un sistema como NetMeeting para implementar CSCW. Pregunta 7 Podría hacer un paralelo entre usar RMI y JDBC? Piense en la situación de un Banco! Problema de Programación 1 El siguiente par de programas cliente-servidor con datagramas hace que los clientes se atiendan en forma iterativa. Modifique sólo el servidor de modo que pueda atender a los lientes en forma concurrente. No necesita escribir todo el codigo de nuevo, solo la parte que falta! Ç EL SERVIDOR import java.io.*; import java.net.*; import java.util.*; public class QuoteServer { protected DatagramSocket socket = null; protected BufferedReader in = null; protected boolean moreQuotes = true; public QuoteServer (String name) throws IOException { super(name); socket = new DatagramSocket(4445); in = new BufferedReader(new FileReader("UnArchivo.txt")); } public void main(String args[] ) throws Exception { while (moreQuotes) { byte[] buf = new byte[256]; DatagramPacket packet = new DatagramPacket(buf, buf.length); socket.receive(packet); String dString = null; if (in == null) dString = new Date().toString(); else dString = in.readLine(); buf = dString.getBytes(); InetAddress address = packet.getAddress(); int port = packet.getPort(); packet = new DatagramPacket(buf, buf.length, address, port); socket.send(packet); moreQuotes = false; } socket.close(); } public static void main(String[] args) throws IOException { new QuoteServerThread().start(); } } EL CLIENTE import java.io.*; import java.net.*; import java.util.*; public class QuoteClient { public static void main(String[] args) throws IOException { if (args.length != 1) { System.out.println("Usage: java QuoteClient <hostname>"); return; } DatagramSocket socket = new DatagramSocket(); byte[] buf = new byte[256]; InetAddress address = InetAddress.getByName(args[0]); DatagramPacket packet = new DatagramPacket(buf, buf.length, address, 4445); socket.send(packet); packet = new DatagramPacket(buf, buf.length); socket.receive(packet); String received = new String(packet.getData(), 0); System.out.println("Revibi : " + received); socket.close(); } } Pregunta de programación 2 Reescriba sólo las partes que sean necesarias para converit los programas arriba vistos de modo que se comuniquen via sockets. Pregunta de programación 3 Describa qué debe hacer para que esto se pueda implementar usando RMI. Escriba sólo el archivo de interfaz.